题目
https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
代码
class Solution {
//数字到字母的映射
char[][] map=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'}};
ArrayList<String> res=new ArrayList<>();//结果集
public List<String> letterCombinations(String digits) {
if(digits==null||digits.equals(""))
return new ArrayList<String>();
char[] chars=digits.toCharArray();//String转char[]
dfs(chars,new StringBuilder(""),0);
return res;
}
public void dfs(char[] chars,StringBuilder s,int k){
if(k>chars.length){
return;
}
//已产生结果,加入结果集并返回
if(k==chars.length){
res.add(s.toString());
return;
}
for(int i=0;i<map[(chars[k]-'0'-2)].length;i++){
s.append(map[(chars[k]-'0'-2)][i]);
dfs(chars,s,k+1);//添加下一位字符
s.deleteCharAt(s.length()-1);//回溯:删除最后一个字符
}
}
}