class Solution {
public List<String> letterCombinations(String digits) {
if(digits.length() == 0){
return new ArrayList<>();
}
String[][] digits_arr = {{"a", "b", "c"},
{"d", "e", "f"}, {"g", "h", "i"},
{"j", "k", "l"}, {"m", "n", "o"},
{"p", "q", "r", "s"}, {"t", "u", "v"},
{"w", "x", "y", "z"}};
List<String[]> digits_list = new ArrayList<>();
for(int i = 0; i < digits.length(); ++i){
int temp = Integer.valueOf(digits.charAt(i)) - 50;
digits_list.add(digits_arr[temp]);
}
StringBuilder sb = new StringBuilder();
List<String> output = new ArrayList<>();
int[] level = {0};
letterCombinationsCore(digits_list, sb, output, level);
return output;
}
public void letterCombinationsCore(List<String[]> digits_list, StringBuilder sb, List<String> output, int[] level) {
if(level[0] == digits_list.size() - 1){
for(int i = 0; i < digits_list.get(level[0]).length; ++i){
sb.append(digits_list.get(level[0])[i]);
output.add(sb.toString());
String temp_str = sb.substring(0, level[0]);
sb = new StringBuilder(temp_str);
}
}else{
for(int i = 0; i < digits_list.get(level[0]).length; ++i){
sb.append(digits_list.get(level[0])[i]);
++level[0];
System.out.printf("%s\r\n", sb.toString());
letterCombinationsCore(digits_list, sb, output, level);
sb = new StringBuilder(sb.substring(0, level[0]));
}
}
--level[0];
}
}
17. Letter Combinations of a Phone Number
最新推荐文章于 2020-02-16 18:53:38 发布