Directorio de artículos
Descripción del Título
El primer método de retroceso recursivo
Obviamente, esto se basa en la enumeración de matrices similares. Establecer un mapeo y un recursivo Cada vez que se completa la recursividad, el resultado se encuentra una vez. El resultado se agrega a la lista correspondiente. Es fácil de entender el código.
class Solution {
public List<String> letterCombinations(String digits) {
HashMap<Character,String[]> map = new HashMap<>();
map.put('2',new String[]{
"a","b","c"});
map.put('3',new String[]{
"d","e","f"});
map.put('4',new String[]{
"g","h","i"});
map.put('5',new String[]{
"j","k","l"});
map.put('6',new String[]{
"m","n","o"});
map.put('7',new String[]{
"p","q","r","s"});
map.put('8',new String[]{
"t","u","v"});
map.put('9',new String[]{
"w","x","y","z"});
return getList(digits,map,"",0,new ArrayList<String>());
}
public List<String> getList(String digits,Map map,String s1,int index,List list){
if(index>=digits.length()){
return list;
}
String []nums = (String[])map.get(digits.charAt(index));
for(int j=0;j<nums.length;j++){
if(index==0){
s1 = "";
}
String s = s1;//保存之前的值。
s1+=nums[j];
getList(digits,map,s1,index+1,list);
if(index==digits.length()-1){
list.add(s1);//添加完了一项。
}
s1 = s;//之前的s1
}
return list;
}
}
Mirando el ritmo de esta presentación, todavía es un poco de mucha aprobación. Después de todo, fue la primera vez que lo hice.