leetcode练习(3)

Letter Combinations of a Phone Number
input"23"
output:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]
根据题意
2代表"abc",3代表"edf"
backtracking(回溯算法)的题目
代码:

public List<String> letterCombinations(String digits) {
       List<String> result = new ArrayList<>();
        if(digits.equals(""))
            return result;
        String[] m = 
        {
          "","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"
        };
        char[] tmp = new char[digits.length()];
        dfs(digits,tmp,0,m,result);
        return result;
        
    }
    public void dfs(String digits,char[] tmp, int index , String[] map ,List<String> result)//深度遍历
    {
        if(index == digits.length())//当index等于digits长度的时候已经得到符合题意的一个字符串
        {
            result.add(new String(tmp));
            return;
        }
       char str = digits.charAt(index);
        for(int i = 0 ; i < map[str - '0'].length() ; i++)
        {
            tmp[index] = map[str - '0'].charAt(i);//
            dfs(digits,tmp,index+1,map,result);//递归调用
        }       
    }

tips:回溯算法

猜你喜欢

转载自blog.csdn.net/shenweiquanshuai/article/details/86473055