LeetCode17. 电话号码的字母组合

题目


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

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

示例:

输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。


分析

回溯算法,先把数字对应的字母初始化一下,然后,然后,去递归每次都添加进一个字母就好了。

没有用数组,用的都是java里的list

提交了之后是5ms发现别人的是2/3ms,而且都是数组。。。思想是一样的,差出去的应该就是我用的list。


还有 我的码确实有点儿长奥 嗯嗯嗯。。。。

扫描二维码关注公众号,回复: 1059674 查看本文章

代码

class Solution {
    
    static List<List<Character>> list = new ArrayList<>();
    
    public static List<String> letterCombinations(String digits) {
        List<String> result = new ArrayList<>();        
        if (digits==null || digits.length()==0)
            return result;       
        addList();
        help(result,digits,"");
        return result;
    }

    public static void help(List<String> result, String digits,String temp){
        
        if (digits.length() == 0){
            result.add(temp);
            return;
        }

        int num = Integer.parseInt(digits.substring(0,1));

        digits = digits.substring(1,digits.length());
        for (int i = 0; i < list.get(num-2).size(); i++) {
            temp += list.get(num-2).get(i);
            help(result,digits,temp);
            temp = temp.substring(0,temp.length()-1);
        }


    }
    public static void addList(){
        List<Character> l2 = new ArrayList<>();
        List<Character> l3= new ArrayList<>();
        List<Character> l4 = new ArrayList<>();
        List<Character> l5 = new ArrayList<>();
        List<Character> l6 = new ArrayList<>();
        List<Character> l7 = new ArrayList<>();
        List<Character> l8 = new ArrayList<>();
        List<Character> l9 = new ArrayList<>();

        l2.add('a');l2.add('b');l2.add('c');
        l3.add('d');l3.add('e');l3.add('f');
        l4.add('g');l4.add('h');l4.add('i');
        l5.add('j');l5.add('k');l5.add('l');
        l6.add('m');l6.add('n');l6.add('o');
        l7.add('p');l7.add('q');l7.add('r');l7.add('s');
        l8.add('t');l8.add('u');l8.add('v');
        l9.add('w');l9.add('x');l9.add('y');l9.add('z');

        list.add(l2);list.add(l3);list.add(l4);list.add(l5);
        list.add(l6);list.add(l7);list.add(l8);list.add(l9);

    }
}

猜你喜欢

转载自blog.csdn.net/qq_38595487/article/details/80382914