欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

电话号码的字母组合

程序员文章站 2022-06-05 13:41:52
...

1,原文地址

https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/

2,题目

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

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

电话号码的字母组合

示例:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

3,源码示例

    public List<String> letterCombinations(String digits) {
        if(digits == null || digits.length() == 0){
            return new ArrayList<>();
        }

        Map<Character,String> number2Map = new HashMap<>();
        number2Map.put('2',"abc");
        number2Map.put('3',"def");
        number2Map.put('4',"ghi");
        number2Map.put('5',"jkl");
        number2Map.put('6',"mno");
        number2Map.put('7',"pqrs");
        number2Map.put('8',"tuv");
        number2Map.put('9',"wxyz");

        List<String> res = new ArrayList<>();

        dfs("",0,res,digits,number2Map);

        return res;

    }

    private void dfs(String s, int i, List<String> res, String digits, Map<Character, String> number2Map) {
        if(i == digits.length()){
            res.add(s);
            return;
        }

        String letters = number2Map.get(digits.charAt(i));

        for(int j = 0;j<letters.length();j++){
            dfs(s+letters.charAt(j),i+1,res,digits,number2Map);
        }

    }