给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。
示例:
输入: S = "a1b2"
输出: ["a1b2", "a1B2", "A1b2", "A1B2"]
输入: S = "3z4"
输出: ["3z4", "3Z4"]
输入: S = "12345"
输出: ["12345"]
注意:
S 的长度不超过12。
S 仅由数字和字母组成。
class Solution {
char reverse(char ch){
if(ch>='a' && ch<='z') return ch-'a'+'A';
if(ch>='A' && ch<='Z') return ch-'A'+'a';
return ch;
}
public:
vector<string> letterCasePermutation(string s) {
vector<string> v;
if(s.length() == 0) return v;
char ch = s[0];
string ts;
ts += ch;
v.push_back(ts);
if(isalpha(ch)){
string ts;
ts += reverse(ch);
v.push_back(ts);
}
for(int i=0; i<s.length(); i++){
int n = v.size();
if(n == 0){
}
else{
for(int j=0; j<n; j++){
if(isalpha(s[i]))
v.push_back(v[j]+reverse(s[i]));
v[j] += s[i];
}
}
}
return v;
}
};