Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.
Input:Digit string "23" Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
DFS穷举,停止条件是字串长度已经达到给出的字母长度。
public class Solution {
static char[][] carr={{},{},{'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'}};
public List<String> letterCombinations(String digits)
{
String s=new String();
ArrayList<String> arrayList=new ArrayList<>();
if(digits.length()==0)
return arrayList;
int k=digits.charAt(0)-'0';
for(int j=0;j<carr[k].length;j++)
dfs(digits, s+carr[k][j], 1,arrayList);
return arrayList;
}
public void dfs(String digits,String s,int len,ArrayList<String> arrayList)
{
if(len==digits.length())
{
arrayList.add(s);
return ;
}
int num=digits.charAt(len)-'0';
for(int i=0;i<carr[num].length;i++)
dfs(digits, s+carr[num][i], len+1,arrayList);
}
}