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

相关推荐
liliangcsdn12 小时前
派息率指标的应用探索和分析
大数据·算法
垆边人似月.12 小时前
华为机试题 :两数之和
c++·算法·华为
默默开发12 小时前
物流行业可用算法方向
算法
垆边人似月.12 小时前
华为机试题 :有效的括号
c++·算法·华为
A加ITIL教练长河achotsao13 小时前
ITIL Master 战略领导者课后系列分享:AI编程正在重新划分研发与运维的边界
算法
hahaha601613 小时前
FPGA+ARM实现AWB的全流程
人工智能·嵌入式硬件·算法·计算机视觉·fpga开发
李洱13 小时前
LangChain 和 LangGraph 的区别:核心原理与使用场景
算法
夏幻灵13 小时前
每日一题:LeetCode 206:反转链表——三指针与原地反转详解
算法·leetcode·链表
岁月蹉跎的一杯酒14 小时前
CCM-可调颜色校正与噪声权衡
图像处理·算法·isp
在所不辞兄14 小时前
选择隐式方法求解刚性ODE
算法