leetcode -- Letter Combinations of a Phone Number

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     }

 

posted @ 2013-07-11 23:22  feiling  阅读(319)  评论(0编辑  收藏  举报