给定一个字符串S
,通过将字符串S
中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。
示例: 输入: S = "a1b2" 输出: ["a1b2", "a1B2", "A1b2", "A1B2"] 输入: S = "3z4" 输出: ["3z4", "3Z4"] 输入: S = "12345" 输出: ["12345"]
注意:
S
的长度不超过12
。S
仅由数字和字母组
成。class Solution { public: vector<string> letterCasePermutation(string S) { //思路:递归 //每个小写字母比大写字母大32 // 每个字母都有两个选择, 改变与不改变 vector<string> result; stringchange(0, S, result); return result; } private: void stringchange(int i, string S, vector<string>&result) { if(i >= S.size()) { result.push_back(S); return; } if(S[i] >= 'a' && S[i] <= 'z') { S[i] = S[i] - 32; stringchange(i + 1, S, result); S[i] = S[i] + 32; } if(S[i] >= 'A' && S[i] <= 'Z') { S[i] = S[i] + 32; stringchange(i + 1, S, result); S[i] = S[i] - 32; } stringchange(i + 1, S, result); } };