穷举vs暴搜vs深搜vs回溯vs剪枝系列一>字母大小写全排列

题目:


解析:


代码:

java 复制代码
private List<String> ret;
    private StringBuffer path;
    public List<String> letterCasePermutation(String s) {
        ret = new ArrayList<>();
        path = new StringBuffer();
        dfs(s,0);
        return ret;
    }

    private void dfs(String s, int pos){
        
        if(pos == s.length()){
            ret.add(path.toString());
            return;
        } 

        char ch = s.charAt(pos);

        //改变
        if(ch < '0' || ch > '9'){
            char tmp = change(ch);
            path.append(tmp);
            dfs(s,pos+1);
            path.deleteCharAt(path.length()-1);//恢复现场
        }

        //不变
        path.append(ch);
        dfs(s,pos+1);
        path.deleteCharAt(path.length()-1);//恢复现场
    }  

    private char change(char ch){
        if(ch >= 'a' && ch <= 'z') return ch -= 32;//小写转大写
        else return ch += 32;//大写转小写
    }
相关推荐
juleskk1 分钟前
3.22 复试训练
算法
还不秃顶的计科生3 分钟前
力扣第84题:完全平方数
算法·leetcode·职场和发展
2301_776508726 分钟前
分布式系统监控工具
开发语言·c++·算法
暮冬-  Gentle°8 分钟前
C++与区块链智能合约
开发语言·c++·算法
愣头不青10 分钟前
78.子集
数据结构·算法
Oueii10 分钟前
C++中的代理模式实现
开发语言·c++·算法
3DVisionary14 分钟前
从微观损伤到宏观断裂:DIC非接触测量在复合材料可靠性验证中的前沿实践
人工智能·数码相机·算法·机器学习·3d·复合材料·dic技术
sonnet-102919 分钟前
拓扑排序的实现
java·c语言·开发语言·笔记·算法
米粒120 分钟前
力扣算法刷题 Day 20
算法·leetcode·职场和发展
Shining059625 分钟前
推理引擎系列(七)《InfiniLM》
人工智能·深度学习·算法·大模型·ai芯片·智能体·推理引擎