17. 电话号码的字母组合 --力扣 --JAVA

简介: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

 题目

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

解题思路

    1. 将每个号码对应的内容用字符串存储起来,0和1对应空字符串;
    2. 从下标0开始遍历digits,读取对应位置的按键,遍历对应的字符串,添加字符到结果字符串当中。

    代码展示

    class Solution {
        private List<String> ans = new ArrayList<>();
        private final String[] DIGITS = new String[]{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
        public List<String> letterCombinations(String digits) {
            if(digits.length() == 0){
                return new ArrayList<>();
            }
            dfs(0,digits, new StringBuilder());
            return ans;
        }
        private void dfs(int index, String digits,StringBuilder sb){
            if(index == digits.length()){
                ans.add(sb.toString());
                return;
            }
            for (char c : DIGITS[Integer.parseInt(String.valueOf(digits.charAt(index)))].toCharArray()){
                dfs(index + 1, digits, new StringBuilder(sb).append(c));
            }
        }
    }

    image.gif


    目录
    相关文章
    |
    10月前
    |
    存储 算法 Go
    【LeetCode 热题100】17:电话号码的字母组合(详细解析)(Go语言版)
    LeetCode 17题解题思路采用回溯算法,通过递归构建所有可能的组合。关键点包括:每位数字对应多个字母,依次尝试;递归构建下一个字符;递归出口为组合长度等于输入数字长度。Go语言实现中,使用map存储数字到字母的映射,通过回溯函数递归生成组合。时间复杂度为O(3^n * 4^m),空间复杂度为O(n)。类似题目包括括号生成、组合、全排列等。掌握回溯法的核心思想,能够解决多种排列组合问题。
    407 11
    |
    算法
    【LeetCode 52】17.电话号码的字母组合
    【LeetCode 52】17.电话号码的字母组合
    172 0
    |
    存储
    Leetcode第49题(字母异位词分组)
    LeetCode第49题要求将字符串数组中的字母异位词分组,可以通过将每个字符串排序后作为键存入哈希表,最后将哈希表中的值添加到结果列表中来实现。
    154 1
    |
    算法
    Leetcode第十七题(电话号码的字母组合)
    这篇文章介绍了如何使用深度优先搜索(DFS)算法来解决LeetCode第17题——电话号码的字母组合问题,通过递归方法生成所有可能的字母组合。
    187 0
    Leetcode第十七题(电话号码的字母组合)
    |
    索引
    【LeetCode 11】242.有效的字母异位词
    【LeetCode 11】242.有效的字母异位词
    149 0
    【LeetCode 11】242.有效的字母异位词
    |
    算法 Java
    LeetCode(一)Java
    LeetCode(一)Java
    192 0
    |
    存储 算法
    LeetCode第49题字母异位词分组
    LeetCode第49题"字母异位词分组"的解题方法,通过将每个字符串的字符排序后作为键存储在HashMap中,有效地将所有字母异位词分组。
    LeetCode第49题字母异位词分组
    LeetCode第17题电话号码的字母组合
    该文章介绍了 LeetCode 第 17 题电话号码的字母组合的解法,通过分析得出可使用递归和回溯的思想解决,避免循环穷举的高循环次数,并给出了具体的编码实现,同时总结了该题较难理解,需要了解递归的本质,当嵌套循环层次多时可考虑递归。
    LeetCode第17题电话号码的字母组合
    |
    存储 算法 Java
    LeetCode经典算法题:打家劫舍java详解
    LeetCode经典算法题:打家劫舍java详解
    230 2
    |
    人工智能 算法 Java
    LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
    LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
    215 1

    热门文章

    最新文章