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"].
解:DFS 递归 (需多练习)
1 public ArrayList<String> letterCombinations(String digits) { 2 // Start typing your Java solution below 3 // DO NOT write main() function 4 ArrayList<String> result = new ArrayList<String>(); 5 if(digits.length() == 0){ 6 result.add(""); 7 return result; 8 } 9 10 11 String[] trans = new String[]{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; 12 13 convert(trans, result, 0, digits, ""); 14 return result; 15 } 16 17 public void convert(String[] trans, ArrayList<String> result, int depth, String digits, String tmp){ 18 if(depth == digits.length()){ 19 result.add(tmp); 20 return; 21 } 22 int index = digits.charAt(depth) - 48; 23 for(int i = 0; i < trans[index].length(); i++){ 24 tmp += trans[index].charAt(i); 25 convert(trans, result, depth + 1, digits, tmp); 26 tmp = tmp.substring(0, tmp.length() - 1); 27 } 28 }