题目地址: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