int l;
int len;
vector<string> v;
vector<string> letterCasePermutation(string s) {
len=s.size();
l=0;
transform(s.begin(),s.end(),s.begin(),::toupper);
v.push_back(s);
transform(s.begin(),s.end(),s.begin(),::tolower);
for(int i=0;i<len;i++){
if(isalpha(s[i])){
l++;
}
}
if(l!=0){
v.push_back(s);
}
dfs(0,0,s);
return v;
};
void dfs(int pos,int sum,string s){
if(sum==l-1){
return ;
}else{
//dfs时要从大于pos位置继续 否则会重复
for(int i=pos;i<len;i++){
if(s[i]>='a'&&s[i]<='z'){
s[i]=toupper(s[i]);
v.push_back(s);
dfs(i,sum+1,s);
s[i]=tolower(s[i]);
}
}
}
}