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 at most 12.
S will consist only of letters or digits.

思路:暴力枚举呗

class Solution {
public:
    vector<string> ans;
    int judge(char c) {
        if (c <= 'Z' && c >= 'A') return 1;
        if (c <= 'z' && c >= 'a') return -1;
        return 0;
    }
    void dfs(int n, string& s) {
        if (n == s.size()) {
            ans.emplace_back(s);
            return ;
        }
        if (judge(s[n]) != 0) {
            s[n] = tolower(s[n]);
            dfs(n+1, s);
            s[n] = toupper(s[n]);
            
            s[n] = toupper(s[n]);
            dfs(n+1, s);
            s[n] = tolower(s[n]);
        }
        else dfs(n+1, s);
    }
    vector<string> letterCasePermutation(string S) {
        dfs(0, S);
        return ans;
    }
};
posted on 2018-02-23 15:26  Beserious  阅读(328)  评论(0编辑  收藏  举报