【算法三十三】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)

相关推荐
Selvaggia19 分钟前
Diffusion Model 的基本原理与模型架构
算法
wabs6662 小时前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
hanlin032 小时前
刷题笔记:力扣第41题-缺失的第一个正数
笔记·算法·leetcode
shehuiyuelaiyuehao2 小时前
算法50,分治归并,数组中的逆序对
java·算法
阳明山水3 小时前
校准分位数驱动智能库存决策
人工智能·深度学习·算法·机器学习·架构
别动我齐刘海4 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
zhangfeng11334 小时前
《从“人工适配“到“智能生成“:KernelSwift 跨国产芯片算子迁移全栈方案解读》 —— 强调范式跃迁和跨硬件属性,适合偏架构分析的写法
人工智能·算法·华为·ai编程·npu
0+1114 小时前
算法 --滑动窗口
c++·算法·leetcode
reikocao5 小时前
大场景下 Hessian 特征值放大与退化检测
算法
hetao17338375 小时前
2026-09-18 hetao1733837 的刷题记录
c++·算法