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 most12
.S
will consist only of letters or digits.
思路:
深度优先遍历。
void dfs (vector<string>& ret,string S,int i) { if(i >= S.length()) { ret.push_back(S); return; } if(isalpha(S[i])) { S[i] = tolower(S[i]); dfs(ret,S,i+1); S[i] = toupper(S[i]); dfs(ret,S,i+1); } else dfs(ret,S,i+1); } vector<string> letterCasePermutation(string S) { vector<string> ret; dfs(ret,S,0); return ret; }
参考:
https://leetcode.com/problems/letter-case-permutation/discuss/117180/clean-C++-solution.