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:回溯算法