LeetCode【17】电话号码的字母组合

题目:

思路:

参考:https://blog.csdn.net/weixin_46429290/article/details/121888154

和上一个题《子集》的思路一样,先画出树结构,看树的深度(遍历层级),树的宽度(横向节点)分别是什么,然后套用模板,这题自然成型。

代码:

java 复制代码
private List<String> result = new ArrayList<>();
private StringBuilder path = new StringBuilder();

private Map<Character, String> phoneMap = new HashMap<>() {{
    put('2', "abc");
    put('3', "def");
    put('4', "ghi");
    put('5', "jkl");
    put('6', "mno");
    put('7', "pqrs");
    put('8', "tuv");
    put('9', "wxyz");
}};

// 思考递归参数
// 思考递归终止条件
// 思考递归函数
public List<String> letterCombinations(String digits) {
    if (digits.length() == 0) {
        return result;
    }

    backTracking(digits, 0);
    return result;
}

public void backTracking(String digits, int startIndex) {
    if (startIndex == digits.length()) {
        result.add(path.toString());
    } else {     // 注意,只有没遍历到树的最后一层,才需要递归的遍历;
        String str = phoneMap.get(digits.charAt(startIndex));
        for (int i = 0; i < str.length(); i++) {    // 注意这里的起始点为0,横向遍历为abc,每个元素
            path.append(str.charAt(i));
            backTracking(digits, startIndex + 1);
            path.deleteCharAt(startIndex);  // 这里要回溯的树的深度,深度为startIndex
        }
    }
}
相关推荐
快去睡觉~1 小时前
力扣400:第N位数字
数据结构·算法·leetcode
qqxhb2 小时前
零基础数据结构与算法——第七章:算法实践与工程应用-搜索引擎
算法·搜索引擎·tf-idf·倒排索引·pagerank·算法库
gzzeason3 小时前
LeetCode Hot100:递归穿透值传递问题
算法·leetcode·职场和发展
汤永红3 小时前
week1-[循环嵌套]画正方形
数据结构·c++·算法
pusue_the_sun3 小时前
数据结构——顺序表&&单链表oj详解
c语言·数据结构·算法·链表·顺序表
yi.Ist4 小时前
图论——Djikstra最短路
数据结构·学习·算法·图论·好难
数据爬坡ing4 小时前
过程设计工具深度解析-软件工程之详细设计(补充篇)
大数据·数据结构·算法·apache·软件工程·软件构建·设计语言
茜子.Java4 小时前
二分算法(模板)
算法
qq_513970446 小时前
力扣 hot100 Day74
数据结构·算法·leetcode
Cx330❀7 小时前
【数据结构初阶】--排序(三):冒泡排序、快速排序
c语言·数据结构·经验分享·算法·排序算法