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"].

Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.

 

解法是递推,下一次的list就是当前list的string加上当前数字代表的字母。

 1 public class Solution {
 2     List<String> lastList=new ArrayList<>();
 3     String[] N2=new String[]{"a","b","c"};
 4     String[] N3=new String[]{"d","e","f"};
 5     String[] N4=new String[]{"g","h","i"};
 6     String[] N5=new String[]{"j","k","l"};
 7     String[] N6=new String[]{"m","n","o"};
 8     String[] N7=new String[]{"p","q","r","s"};
 9     String[] N8=new String[]{"t","u","v"};
10     String[] N9=new String[]{"w","x","y","z"};
11     
12     public List<String> letterCombinations(String digits) {
13         String[] num = null;
14         if (digits.equals("")) {
15             lastList.add("");
16             return lastList;
17         }
18         for (int i = 0; i < digits.length(); i++) {
19             
20             switch (digits.charAt(i)) {
21             case '2':
22                 num=N2;
23                 break;
24             case '3':
25                 num=N3;
26                 break;
27             case '4':
28                 num=N4;
29                 break;
30             case '5':
31                 num=N5;
32                 break;
33             case '6':
34                 num=N6;
35                 break;
36             case '7':
37                 num=N7;
38                 break;
39             case '8':
40                 num=N8;
41                 break;
42             case '9':
43                 num=N9;
44                 break;
45 
46             }
47             if (i==0) {
48                 lastList.addAll(Arrays.asList(num));
49                 continue;
50             }
51             List<String> nextList=new ArrayList<>();
52             for (String string : lastList) {
53                 for (String ss : num) {
54                     nextList.add(string+ss);
55                 }
56             }
57             lastList=nextList;
58         }
59         return lastList;
60     }
61    
62 }

 

posted @ 2014-11-13 21:59  birdhack  阅读(161)  评论(0编辑  收藏  举报