LeetCode 017 电话号码的字母组合

017 电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
LeetCode 017 电话号码的字母组合_第1张图片
示例:
输入:“23”
输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].

方法:DFS递归
思路:先将字符串里的数字转换成List<>里,在定义一个char的二维数组,把每个数字所对应的字符存在字符数组中,在递归函数中,取出每个数字的字符数组再进行递归,一层一层递归,直到到最外层,可以将输出的所有结果存在hashset中
代码:

public static List letterCombinations(String digits) {
        if(digits.equals("")){
            return new ArrayList();
        }
        char[][] temp;
        temp = new char[][]{
                {},
                {},
                {'a','b','c'},
                {'d','e','f'},
                {'g','h','i'},
                {'j','k','l'},
                {'m','n','o'},
                {'p','q','r','s'},
                {'t','u','v'},
                {'w','x','y','z'}
        };
        List indexList = new ArrayList();
        for(int i=0;i resultSet = new HashSet();
        String str="";
        visit(temp,indexList,0,str,resultSet);
        return new ArrayList(resultSet);
    }
    public static void visit(char[][] temp,List indexList,int cur,
                      String str,Set resultSet){
        if(cur

注意:数字是从2开始的,所以在char的二维字符数组中存两个空的一维字符数组。

你可能感兴趣的:(LeetCode)