穷举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;//大写转小写
    }
相关推荐
zbh060418 小时前
洛谷P5788 【模板】单调栈——单调栈
数据结构·算法
moonsims18 小时前
Z3 Technology-适用于无人机和机器人的 4K 高清摄像机和视频编码器
算法
摘星编程18 小时前
深入浅出 Tokio 源码:掌握 Rust 异步编程的底层逻辑
网络·算法·rust·系统编程·tokio
Hard_Liquor19 小时前
Datawhale秋训营-“大运河杯”数据开发应用创新大赛
人工智能·深度学习·算法
liu****19 小时前
笔试强训(八)
开发语言·算法·1024程序员节
草莓工作室19 小时前
数据结构14:查找
数据结构·算法
屈冠成20 小时前
C语言数组:编辑世界的坚固桥梁
c语言·开发语言·算法
应用市场20 小时前
STM32卡尔曼滤波算法详解与实战应用
人工智能·stm32·算法
启诚科技21 小时前
树上二分(树的重心)
c++·算法·二分·树的重心
风筝在晴天搁浅21 小时前
代码随想录 617.合并二叉树
数据结构·算法