方法一:回溯
String[] letter_map = {" ","*","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
List<String> res = new ArrayList<>();
public List<String> letterCombinations(String digits) {
if(digits==null||digits.length()==0) return new ArrayList<>();
iterStr(digits,new StringBuilder(),0);
return res;
}
public void iterStr(String str, StringBuilder letter, int index) {
if(index==str.length()){
res.add(letter.toString());
return;
}
char c=str.charAt(index);
String mapStr=letter_map[c-'0'];
for(int i=0;i<mapStr.length();i++){
letter.append(mapStr.charAt(i));
iterStr(str,letter,index+1);
letter.deleteCharAt(letter.length()-1);
}
}
方法二:队列
public List<String> letterCombinations(String digits) {
List<String> list=new ArrayList<>();
if(digits==null||digits.length()==0) return list;
String[] letter_map = {" ","*","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
list.add("");
for(int i=0;i<digits.length();i++){
String letter=letter_map[digits.charAt(i)-'0'];
int size=list.size();
for(int j=0;j<size;j++){
String tmp=list.remove(0);
for(int k=0;k<letter.length();k++){
list.add(tmp+letter.charAt(k));
}
}
}
return list;
}