class Solution {
Map<String, String> phone = new HashMap<String, String>() {{
put("2", "abc");
put("3", "def");
put("4", "ghi");
put("5", "jkl");
put("6", "mno");
put("7", "pqrs");
put("8", "tuv");
put("9", "wxyz");
}};
List<String> output = new ArrayList<String>();
public List<String> letterCombinations(String digits) {
if(digits.length() != 0){
back("",digits);
}
return output;
}
public List<String> back(String com,String b){
if(b.length() == 0){
output.add(com);
}else{
String digit = b.substring(0,1);
String letters = phone.get(digit);
for(int i = 0 ;i<letters.length();++i){
String letter = letters.substring(i,i+1);
back(com + letter,b.substring(1));
}
}
return output;
}
}
说是回溯法 - = 。穷举类型。