leetcode17电话号码的字母组合

Posted lisin-lee-cooper

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode17电话号码的字母组合相关的知识,希望对你有一定的参考价值。

一.问题描述

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

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

电话号码字母

  • 示例 1:

  • 输入:digits = “23”

  • 输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]

二.示例代码

static Map<Character, String> phoneMap = new HashMap<Character, String>() {{
        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 static void main(String[] args) {
        List<String> result = letterCombinations("23");
        System.out.println(result);
    }

    public static List<String> letterCombinations(String digits) {
        List<String> combinations = new ArrayList<String>();
        if (digits.length() == 0) {
            return combinations;
        }
        backtrack(combinations, digits, 0, new StringBuffer());
        return combinations;
    }

    public static void backtrack(List<String> combinations,
                                 String digits, int index, StringBuffer combination) {
        if (index == digits.length()) {
            combinations.add(combination.toString());
        } else {
            char digit = digits.charAt(index);
            String letters = phoneMap.get(digit);
            int lettersCount = letters.length();
            for (int i = 0; i < lettersCount; i++) {
                combination.append(letters.charAt(i));
                backtrack(combinations, digits, index + 1, combination);
                combination.deleteCharAt(index);
            }
        }
    }

以上是关于leetcode17电话号码的字母组合的主要内容,如果未能解决你的问题,请参考以下文章

[回溯算法]leetcode17. 电话号码的字母组合(c实现)

leetcode17 电话号码的字母组合(Medium)

LeetCode 第17题电话号码的字母组合

LeetCode 17.电话号码的字母组合

LeetCode #17 电话号码的字母组合

LeetCode17. 电话号码的字母组合