Question Description My Key
package LeetCode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) {
String digits = "234";
System.out.println(letterCombinations(digits));
}
public static List<String> letterCombinations(String digits) {
List<String> answer = new ArrayList<String>();
if (digits == null || digits.length() == 0)
return answer;
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(2, "abc");
map.put(3, "def");
map.put(4, "ghi");
map.put(5, "jkl");
map.put(6, "mno");
map.put(7, "pqrs");
map.put(8, "tuv");
map.put(9, "wxyz");
return combine(digits, map);
}
public static List<String> combine(String digtis, Map<Integer, String> map) {
List<String> cur = new ArrayList<String>();
if (digtis.length() == 1) {
String digitsStr = map.get(Integer.parseInt(digtis));
for (int i = 0; i < digitsStr.length(); i++) {
cur.add("" + digitsStr.charAt(i));
}
return cur;
}
List<String> pre = combine(digtis.substring(1), map);
String head = map.get(Integer.parseInt(digtis.substring(0, 1)));
for (int i = 0; i < pre.size(); i++) {
for (int j = 0; j < head.length(); j++) {
cur.add(head.charAt(j) + pre.get(i));
}
}
return cur;
}
}