【算法三十三】17. 电话号码的字母组合

17. 电话号码的字母组合

回溯:

java 复制代码
class Solution {
    public List<String> letterCombinations(String digits) {
        List<String> ans = new ArrayList<>();
        if(digits.length() == 0){
            return ans;
        }
        Map<Character,String> hashmap = Map.of(
            '2',"abc",
            '3',"def",
            '4',"ghi",
            '5',"jkl",
            '6',"mno",
            '7',"pqrs",
            '8',"tuv",
            '9',"wxyz"
        );
        StringBuffer sb = new StringBuffer();
        backtrack(ans,hashmap,digits,0,sb);
        return ans;
    }

    public void backtrack(List<String> ans,Map<Character,String> hashmap,String digits,int index,StringBuffer sb){
        if(index == digits.length()){
            ans.add(sb.toString());
        }
        else{
            char digit = digits.charAt(index);
            String letters = hashmap.get(digit);
            for(int i = 0;i<letters.length();i++){
                sb.append(letters.charAt(i));
                backtrack(ans,hashmap,digits,index+1,sb);
                sb.deleteCharAt(index);
            }
        }
    }
}

时间复杂度:O(3^m×4^n)

空间复杂度:O(m+n)

相关推荐
变量未定义~32 分钟前
最小生成树1(Prim模板)、最小生成树2(kruskal模板)、最近公共祖先(模板)
算法
这就是佬们吗36 分钟前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm
LONGZETECH43 分钟前
新能源汽车充电设备装配与调试仿真教学软件 技术架构与核心实现解析
大数据·算法·3d·unity·架构·汽车
自学小白菜1 小时前
关于提升机器学习算法做预测回归任务精度的方法分享
算法·机器学习·回归·提升精度
学废了wuwu1 小时前
从入门到实战:深入浅出模型压缩三大核心——剪枝、彩票假设与知识蒸馏
人工智能·算法·剪枝
小肝一下1 小时前
3. 单链表
c语言·数据结构·c++·算法·leetcode·链表·dijkstra
劈星斩月1 小时前
监督学习算法 之 决策树
学习·算法·决策树
学计算机的计算基1 小时前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
tachibana21 小时前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
陈天伟教授2 小时前
暴力美学-大型语言模型与涌现:一个复杂系统视角
人工智能·算法