当前位置: 首页 > article >正文

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>电话号码的字母组合

题目:

 


解析: 

 


代码: 

private String[] hash = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    private StringBuffer path;
    private List<String> ret;
    public List<String> letterCombinations(String digits) {
        ret = new ArrayList<>();
        path = new StringBuffer();
        if(digits.length() == 0) return ret;

        dfs(digits,0);
        return ret;
    } 

    private void dfs(String digits,int pos){

        if(digits.length() == pos){
            ret.add(path.toString());
            return;
        } 

        char[] cur = hash[digits.charAt(pos)-'0'].toCharArray();
        for(int i = 0; i < cur.length; i++){
            path.append(cur[i]);
            dfs(digits, pos+1);

        //恢复现场 
        //deleteCharAt (int指数) 移除此序列中指定位置的字符
            path.deleteCharAt(path.length()-1);
        }
        
    }

http://www.kler.cn/a/453203.html

相关文章:

  • 2024国赛A问题5
  • 详细讲解axios封装与api接口封装管理
  • 后端开发如何高效使用 Apifox?
  • K8s证书过期
  • Jensen-Shannon Divergence:定义、性质与应用
  • Vue.use()和Vue.component()
  • 一文大白话讲清楚javascript单点登录
  • Vue.js 高级组件开发:设计模式与实践
  • Huggingface下载模型的几种方式
  • 文件解析漏洞中间件(iis和Apache)
  • 01-linux基础命令
  • Android 13 非 Launcher 应用开机启动:通过监听开机广播实现
  • linux下搭建lamp环境(dvwa)
  • Qt 应用程序转换为服务
  • MySQL基础-事务
  • 代码随想录算法【Day2】
  • Docker Run使用方法及参数详细说明
  • 【mysql】id主键列乱了之后,重新排序(可根据日期顺序)
  • 4.5 数据表的外连接
  • 【c++笔试强训】(第四十五篇)
  • 基于c语言的union、字符串、格式化输入输出
  • 【Golang 面试题】每日 3 题(六)
  • 学习C++:书写hello world
  • 什么是微分
  • OCR实践-Table-Transformer
  • 【人工智能】用Python实现情感分析:从简单词典到深度学习方法的演进