c++中字母转化:
字母大小写转换(小写变大写或大写变小写):ch^=32;
字母变为小写:ch|=32;
字母变大写:ch&=-33。
力扣打卡784题:字母大小写全排列
题目:
给定一个字符串 s
,通过将字符串 s
中的每个字母转变大小写,我们可以获得一个新的字符串。返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。
代码:
class Solution {
public:
vector<string> res;
vector<string> letterCasePermutation(string s) {
// 思路:暴搜,大小写字符取两种情况即可;数字直接添加
int n=s.size();
backtrack(s,"",0,n);
return res;
}
void backtrack(string s,string path,int i,int n){
if(i==n){res.push_back(path);return;}
// 数字直接添加
if(s[i]>='0'&&s[i]<='9')backtrack(s,path+s[i],i+1,n);
else{
// 字母就原字母和转换之后的字母两种情况,然后进行下一层的枚举
backtrack(s,path+s[i],i+1,n);
backtrack(s,path+char(s[i]^32),i+1,n);
}
}
};