力扣刷题记录 -- JAVA--67---17. 电话号码的字母组合


一、题目

在这里插入图片描述

在这里插入图片描述

二、代码

class Solution 
{
    List<String> re_list = new LinkedList<>();
    StringBuilder str = new StringBuilder();
    String str_2 = "abc";
    String str_3 = "def";
    String str_4 = "ghi";
    String str_5 = "jkl";
    String str_6 = "mno";
    String str_7 = "pqrs";
    String str_8 = "tuv";
    String str_9 = "wxyz";
    public void back(String digits,int start)
    { 
        int length;
        length = str.length();
        if(length>digits.length())  return ;
        if(length == digits.length()) 
        {
            // System.out.println("满足");
            // System.out.println("字符串  "+str.toString());
            // re_list.add(new String(str.toString()));
            re_list.add(str.toString());
        }

        int i;
        int j;
        
        
        length =  digits.length();
        // System.out.println("length  "+length);
        // System.out.println("start  "+start);
        for(i=start;i<length;i++)
        {
            if(digits.charAt(i)=='2')
            {
                int length_str = str_2.length();
                for(j=0;j<length_str;j++)
                {
                    str.append(str_2.charAt(j));
                    back(digits,i+1);
                    str.deleteCharAt(str.length()-1);
                }
            }
            else if(digits.charAt(i)=='3')
            {
                int length_str = str_3.length();
                for(j=0;j<length_str;j++)
                {
                    str.append(str_3.charAt(j));
                    back(digits,i+1);
                    str.deleteCharAt(str.length()-1);
                }
            }
            else if(digits.charAt(i)=='4')
            {
                int length_str = str_4.length();
                for(j=0;j<length_str;j++)
                {
                    str.append(str_4.charAt(j));
                    back(digits,i+1);
                    str.deleteCharAt(str.length()-1);
                }
            }
            else if(digits.charAt(i)=='5')
            {
                int length_str = str_5.length();
                for(j=0;j<length_str;j++)
                {
                    str.append(str_5.charAt(j));
                    back(digits,i+1);
                    str.deleteCharAt(str.length()-1);
                }
            }
            else if(digits.charAt(i)=='6')
            {
                int length_str = str_6.length();
                for(j=0;j<length_str;j++)
                {
                    str.append(str_6.charAt(j));
                    back(digits,i+1);
                    str.deleteCharAt(str.length()-1);
                }
            }
            else if(digits.charAt(i)=='7')
            {
                int length_str = str_7.length();
                for(j=0;j<length_str;j++)
                {
                    str.append(str_7.charAt(j));
                    back(digits,i+1);
                    str.deleteCharAt(str.length()-1);
                }
            }
            else if(digits.charAt(i)=='8')
            {
                int length_str = str_8.length();
                for(j=0;j<length_str;j++)
                {
                    str.append(str_8.charAt(j));
                    back(digits,i+1);
                    str.deleteCharAt(str.length()-1);
                }
            }
            else  if(digits.charAt(i)=='9')
            {
                int length_str = str_9.length();
                for(j=0;j<length_str;j++)
                {
                    str.append(str_9.charAt(j));
                    back(digits,i+1);
                    str.deleteCharAt(str.length()-1);
                }
            }
        }

    }
    public List<String> letterCombinations(String digits) 
    {
         if(digits.length()==0) return re_list;
         back(digits ,0);
         return re_list;
    }
}

三、运行结果

在这里插入图片描述

四、附录

二刷

class Solution 
{
    List<String> re = new LinkedList<>();
    StringBuffer path = new StringBuffer();
    String ch_2 = "abc";
    String ch_3 = "def";
    String ch_4 = "ghi";
    String ch_5 = "jkl";
    String ch_6 = "mno";
    String ch_7 = "pqrs";
    String ch_8 = "tuv";
    String ch_9 = "wxyz";    
    public void track(String digits,int start)
    {
         int i,j;
         int length = digits.length();

         if(path.length()==digits.length()) re.add(path.toString());
         if(path.length()>digits.length()) return;
         int length_temp;
         for(i=start;i<length;i++)
         {
             char temp = digits.charAt(i);
             if(temp=='2')
             {
                length_temp = ch_2.length();
                for(j=0;j<length_temp;j++)
                {
                    path.append(ch_2.charAt(j));
                    track(digits,i+1);
                    path.deleteCharAt(path.length()-1);
                }
                
             }
             else if(temp=='3')
             {
                length_temp = ch_3.length();
                for(j=0;j<length_temp;j++)
                {
                    path.append(ch_3.charAt(j));
                    track(digits,i+1);
                    path.deleteCharAt(path.length()-1);
                }

             }
             else if(temp=='4')
             {
                length_temp = ch_4.length();
                for(j=0;j<length_temp;j++)
                {
                    path.append(ch_4.charAt(j));
                    track(digits,i+1);
                    path.deleteCharAt(path.length()-1);
                }

             }
             else if(temp=='5')
             {
                length_temp = ch_5.length();
                for(j=0;j<length_temp;j++)
                {
                    path.append(ch_5.charAt(j));
                    track(digits,i+1);
                    path.deleteCharAt(path.length()-1);
                }

             }
             else if(temp=='6')
             {
                length_temp = ch_6.length();
                for(j=0;j<length_temp;j++)
                {
                    path.append(ch_6.charAt(j));
                    track(digits,i+1);
                    path.deleteCharAt(path.length()-1);
                }

             }
             else if(temp=='7')
             {
                length_temp = ch_7.length();
                for(j=0;j<length_temp;j++)
                {
                    path.append(ch_7.charAt(j));
                    track(digits,i+1);
                    path.deleteCharAt(path.length()-1);
                }

             }
             else if(temp=='8')
             {
                length_temp = ch_8.length();
                for(j=0;j<length_temp;j++)
                {
                    path.append(ch_8.charAt(j));
                    track(digits,i+1);
                    path.deleteCharAt(path.length()-1);
                }

             }
             else if(temp=='9')
             {
                length_temp = ch_9.length();
                for(j=0;j<length_temp;j++)
                {
                    path.append(ch_9.charAt(j));
                    track(digits,i+1);
                    path.deleteCharAt(path.length()-1);
                }

             }
         }
    }
    public List<String> letterCombinations(String digits) 
    {
        if(digits.length() == 0) return re;
        track(digits,0);
        return re;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@白圭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值