题目地址:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/submissions/
代码地址:https://github.com/javartisan/edx-ds/tree/master/src/main/java/com/javartisan/leetcode
回溯方法:
class Solution { static char [][]mtx={ {‘a‘,‘b‘,‘c‘},//2 {‘d‘,‘e‘,‘f‘},//3 {‘g‘,‘h‘,‘i‘},//4 {‘j‘,‘k‘,‘l‘}, {‘m‘,‘n‘,‘o‘}, {‘p‘,‘q‘,‘r‘,‘s‘}, {‘t‘,‘u‘,‘v‘}, {‘w‘,‘x‘,‘y‘,‘z‘}//9 }; public List<String> letterCombinations(String digits) { List<String> ans = new ArrayList<>(); if(digits==null||digits.length()==0){ return ans; } dfs(ans, new StringBuilder(), digits, 0); return ans; } public void dfs(List<String> ans,StringBuilder an,String d,int index){ if(index==d.length()){ ans.add(an.toString()); return; } int num = d.charAt(index)-50; char[] letters = mtx[num]; an.append(letters[0]); dfs(ans,an,d,index+1); for(int i=1,size=letters.length;i<size;i++){ an.setCharAt(an.length()-1,letters[i]); dfs(ans,an,d,index+1); } an.delete(an.length()-1,an.length()); } }
原文:https://www.cnblogs.com/leodaxin/p/11258667.html