LeetCode刷题笔记(Java实现)-- 17.电话号码的字母组合

题目难度:
Medium

题目要求:
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
LeetCode刷题笔记(Java实现)-- 17.电话号码的字母组合_第1张图片
示例:
输入:digits = “23”
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]

编码思路:(建议对照代码理解)
1.创建最后输出的字符组合的集合combinations;
注:ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
2.如果输入的数字串长度为0,就直接返回,说明为空;
3.创建哈希表,存放数字与字母的对应关系;
4.定义回溯函数,确定传递的参数有【字符组合的集合(combinations),参考的哈希表(phoneMap),给定的数字串(digits),当前数字的位置(index),当前组成的字母组合(combination)】;
5.构造回溯函数:{
(1)如果digits.length()==index,最后一个数字都回溯完了,说明已经是最长的组合,可以将当前的一个字母组合加入combinations合集中,等待返回;
(2)其他情况,以当前数字对应的字母串长度为边界条件,在这个长度内,对所有的字母进行循环,并将其加入当前字母组合的末尾,再回溯进入下一个数字对应的字母串;
}

代码:

/*
 * @lc app=leetcode.cn id=17 lang=java
 *
 * [17] 电话号码的字母组合
 */

// @lc code=start
class Solution {
   
    public List<String> letterCombinations(String digits) {
   

        //创建最后输出的字符组合的集合combinations;
        List<String> combinations = new ArrayList<String

你可能感兴趣的:(LeetCode刷题笔记(Java实现)-- 17.电话号码的字母组合)