C++字母数字函数总结
isalnum(char c) 判断是否为字母或者数字
isalpha(char c) 判断是否为字母
isdigit(char c) 判断是否为数字
islower(char c) 判断是否为小写字母
isupper(char c) 判断是否为大写字母
toupper(char c) 字母小写转大写
tolower(char c) 字母大写转小写
S[index]^32
ASCII码表
A 1000001 a 1100001
B 1000010 b 1100010
C 1000011 c 1100011
...
Z 1011010 z 1111010
32是0100000,这是小写和大写字母之间的唯一区别.因此,切换该位会切换字母的大小写.
class Solution {
public:
vector<string> result;
string ans;
vector<string> letterCasePermutation(string S) {
int n=S.size();
backtrack(S,0);
return result;
}
void backtrack(string& S,int index){
if(S.size()==ans.size()){
result.push_back(ans);
return;
}
ans.push_back(S[index]);
backtrack(S,index+1);
ans.pop_back();
if(isalpha(S[index])){//判断是否是字母
ans.push_back(S[index]^32);//大小写互相转换
backtrack(S,index+1);
ans.pop_back();
}
}
};