题目
给定一个字符串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) { //bfs
vector<string> ans;
queue<string> buf;
buf.push(s);
for(int i=0;i<s.size();i++) {
if(isalpha(s[i])) {
int bufsize = buf.size();
for(int m=0;m<bufsize;m++) {
string tmp = buf.front();
buf.pop();
buf.push(tmp);
if(isupper(tmp[i])) {
tmp[i] += 'a' - 'A';
buf.push(tmp);
}
else {
tmp[i] -= 'a' - 'A';
buf.push(tmp);
}
}
}
}
while(!buf.empty()) {
ans.push_back(buf.front());
buf.pop();
}
return ans;
}
};