美文网首页
LeetCode-17. 电话号码的字母组合

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

作者: 傅晨明 | 来源:发表于2020-07-24 10:53 被阅读0次

    17. 电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

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

    image.png

    示例:

    输入:"23"
    输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
    说明:
    尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

        public List<String> letterCombinations(String digits) {
            if (digits == null || digits.length() == 0) {
                return new ArrayList<>();
            }
            Map<Character, String> map = 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");
            }};
            List<String> res = new LinkedList<>();
            search("", digits, 0, res, map);
            return res;
        }
    
        private void search(String s,
                            String digits,
                            int i, //level
                            List<String> res,
                            Map<Character, String> map) {
            //1. terminator
            if (i == digits.length()) {
                res.add(s);
                return;
            }
            //2. process
            String letters = map.get(digits.charAt(i));
            for (int j = 0; j < letters.length(); j++) {
                //3. drill down
                search(s + letters.charAt(j), digits, i + 1, res, map);
            }
            //4. reverse
        }
    

    相关文章

      网友评论

          本文标题:LeetCode-17. 电话号码的字母组合

          本文链接:https://www.haomeiwen.com/subject/bucjlktx.html