思路:利用hashmap存储数字与其对应的字符串,将vlue中的字符串放入每一层,循环添加,通过深度优先搜索进入下一层。当长度StringBuilder长度等于digits的长度时,递归结束。
class Solution {
private static List<String> list;
private static Map<Character,String> map=new HashMap<>();
private static StringBuilder s=new StringBuilder();
public List<String> letterCombinations(String digits) {
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");
list=new ArrayList<>();
if (digits==null||digits.length()==0){
return list;
}
DFS(digits,0);
return list;
}
private void DFS(String digits,int index ){
if (index==digits.length()){
list.add(s.toString());
return;
}
String s1=map.get(digits.charAt(index));
for (char a:s1.toCharArray()){
s.append(a);
DFS(digits,index+1);
s.deleteCharAt(s.length()-1);
}
}
}