力扣:17. 电话号码的字母组合

回溯解题思路:

1.先把0到9的对应的字符串用一个string类型的数组来储存起来,之后写回溯函数,组合的终止条件为s.length()==digits.length(),同时也要防止i下标超出string类型digits中的索引范围 ,之后就是找到对影数字的字符串的下标,用for循环来进行遍历组合,达到组合长度后,进行回溯操作。

class Solution { 
    //接收的全部的字母组合
     List li=new ArrayList<>();
     //接收单个字母组合
     String s="";
    public List letterCombinations(String digits) {
        //把0到9对应的值存入到string类型的数组中
           String[] st={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
          //如果输入值为0直接返回空数组
          if(digits.length()==0){
              return li;
          }
          //调用回溯函数
           huisu(0,st,digits);
           return li;
    }
    public void huisu(int i,String[] st,String digits){
        //组合的终止条件
         if(s.length()==digits.length()){
            li.add(s);
            return ;
         }
         //防止i下标超出string类型digits中的索引范围
         if(i==digits.length()){
             return;
         }
         //找到对应数字的字符串下标
         int j=Integer.parseInt(""+digits.charAt(i));
         //for循环来进行遍历
         for(int k=0;k

你可能感兴趣的:(回溯,leetcode,算法)