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


    目录
    相关文章
    |
    3月前
    |
    存储 算法
    LeetCode第49题字母异位词分组
    LeetCode第49题"字母异位词分组"的解题方法,通过将每个字符串的字符排序后作为键存储在HashMap中,有效地将所有字母异位词分组。
    LeetCode第49题字母异位词分组
    |
    1月前
    |
    存储
    Leetcode第49题(字母异位词分组)
    LeetCode第49题要求将字符串数组中的字母异位词分组,可以通过将每个字符串排序后作为键存入哈希表,最后将哈希表中的值添加到结果列表中来实现。
    15 1
    |
    1月前
    |
    算法
    Leetcode第十七题(电话号码的字母组合)
    这篇文章介绍了如何使用深度优先搜索(DFS)算法来解决LeetCode第17题——电话号码的字母组合问题,通过递归方法生成所有可能的字母组合。
    16 0
    Leetcode第十七题(电话号码的字母组合)
    |
    1月前
    |
    索引
    【LeetCode 11】242.有效的字母异位词
    【LeetCode 11】242.有效的字母异位词
    15 0
    【LeetCode 11】242.有效的字母异位词
    |
    1月前
    |
    算法
    【LeetCode 52】17.电话号码的字母组合
    【LeetCode 52】17.电话号码的字母组合
    31 0
    |
    1月前
    |
    算法 Java
    LeetCode(一)Java
    LeetCode(一)Java
    |
    3月前
    |
    算法
    LeetCode第17题电话号码的字母组合
    该文章介绍了 LeetCode 第 17 题电话号码的字母组合的解法,通过分析得出可使用递归和回溯的思想解决,避免循环穷举的高循环次数,并给出了具体的编码实现,同时总结了该题较难理解,需要了解递归的本质,当嵌套循环层次多时可考虑递归。
    LeetCode第17题电话号码的字母组合
    |
    3月前
    |
    算法 Java
    LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
    LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
    50 6
    |
    3月前
    |
    存储 算法 Java
    LeetCode经典算法题:打家劫舍java详解
    LeetCode经典算法题:打家劫舍java详解
    68 2
    |
    3月前
    |
    人工智能 算法 Java
    LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
    LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
    50 1