【LeetCode 784】 Letter Case Permutation

題目描述

Given a string S, we can transform every letter individually to be lowercase or uppercase to create another string. Return a list of all possible strings we could create.

Examples:

Input: S = "a1b2"
Output: ["a1b2", "a1B2", "A1b2", "A1B2"]

Input: S = "3z4"
Output: ["3z4", "3Z4"]

Input: S = "12345"
Output: ["12345"]

Note:

S will be a string with length between 1 and 12.
S will consist only of letters or digits.

思路

遞歸,如果當前位置字符可以修改,修改或者不修改繼續往下遞歸。

代碼

class Solution {
public:
    vector<string> letterCasePermutation(string S) {
        vector<string> res;
        //res.push_back(S);
        dfs(res, S, 0);
        return res;
    }
    
    void dfs(vector<string>& res, string cur, int cnt) {
        if (cnt == cur.length()) {
            res.push_back(cur);
            return;
        }
        dfs(res, cur, cnt+1);
        if (cur[cnt] >= '0' && cur[cnt] <= '9') return;
        else if (cur[cnt] >= 'a' && cur[cnt] <= 'z') {
            cur[cnt] = cur[cnt] - 'a' + 'A';
            dfs(res, cur, cnt+1);
            return;
        }else if (cur[cnt] >= 'A' && cur[cnt] <= 'Z') {
            cur[cnt] = cur[cnt] - 'A' + 'a';
            dfs(res, cur, cnt+1);
            return;
        } 
        return;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章