/
LetterCombinationsOfAPhoneNumber.java
44 lines (41 loc) · 1.35 KB
/
LetterCombinationsOfAPhoneNumber.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* @author: robinjia
* @emai: dengshilong1988@gmail.com
* @create:2015年12月14日 下午10:53:53
*
*/
import java.util.ArrayList;
import java.util.List;
public class LetterCombinationsOfAPhoneNumber {
private static String[][] refer={{},{},{"a","c","b"},{"d","e","f"},
{"g","h","i"},{"j","k","l"},{"m","n","o"},{"p","q","r","s"},
{"t","u","v"},{"w","x","y","z"}};
public static List<String> letterCombinations(String digits) {
List<String> result = new ArrayList<String>();
if (digits.length() == 0)
return result;
result = letterCombination(0, digits);
return result;
}
private static List<String> letterCombination(int start, String digits) {
List<String> result = new ArrayList<String>();
if (start == digits.length()) {
result.add("");
return result;
}
List<String> temp = letterCombination(start + 1, digits);
int index = digits.charAt(start) - '0';
for (String first: refer[index]) {
for (String second: temp) {
result.add(first + second);
}
}
return result;
}
public static void main(String[] args) {
List<String> result = letterCombinations("23");
for(String s: result) {
System.out.println(s);
}
}
}