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 @   lwx_R  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-09-13 STL中algorithm
2021-09-13 c++string类
2021-09-13 string.h函数
2021-09-13 高精度
2021-09-13 查找质数-欧拉筛法和埃氏筛
点击右上角即可分享
微信分享提示