LC784 Cnm应用

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]);
            }
        }
    }
}
posted @ 2022-09-13 18:59  lwx_R  阅读(55)  评论(0)    收藏  举报