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     }

 

你可能感兴趣的:(LeetCode)