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

相关推荐
逆境不可逃2 小时前
LeetCode 热题 100 之 131. 分割回文串 51. N 皇后
算法·leetcode·职场和发展
进击的小头2 小时前
第21篇:BUCK变换器双环控制系统设计与参数整定调试实战
python·算法
liliangcsdn2 小时前
信息检索评估指标Recall@K的分析和计算示例
算法·全文检索
handsomethefirst2 小时前
【算法与数据结构】【面试经典150题】【题36-题40】
数据结构·算法·面试
寒月小酒2 小时前
3.29+3.30
数据结构·算法
Flying pigs~~2 小时前
基于Bert的模型迁移文本分类项目
人工智能·深度学习·算法·大模型·nlp·bert
ZoeJoy82 小时前
算法筑基(六):分治算法——大事化小,小事化了
算法·排序算法·动态规划·哈希算法·图搜索算法
美式请加冰2 小时前
BFS算法(下)
算法·宽度优先
少许极端2 小时前
算法奇妙屋(三十七)-贪心算法学习之路4
学习·算法·贪心算法·田忌赛马