public static List<String> letterCom(String digits){
ArrayList<String> com = new ArrayList<>();
if(digits.length()==0) return com;
HashMap<Character, String> pm = new HashMap(){{
put('2', "abc");
put('3', "def");
put('4', "ghi");
put('5', "jkl");
put('6', "mno");
put('7', "pqrs");
put('8', "tuv");
put('9', "wxyz");
}};
back(com,pm,digits,0,new StringBuffer());
return com;
}
private static void back(ArrayList<String> com,
HashMap<Character, String> pm,
String digits, int i,
StringBuffer stringBuffer) {
if(i==digits.length()){
com.add(stringBuffer.toString());
}else{
char c = digits.charAt(i);
String s = pm.get(c);
int length = s.length();
for (int j = 0; j <=length ; j++) {
stringBuffer.append(s.charAt(j));
back(com,pm,digits,i+1,stringBuffer);
stringBuffer.deleteCharAt(i);
}
}
}