返回两个字符串中的最大子串

/*思路 将两个字符串转换为字符数组  对第一字符数组遍历 每遍历一个元素 就对第二字符数组从头开始遍历
     * 每次找到相同的元素 就开始计数 并且同时找 两个字符数组下一个元素是否相同
     *  
     *  
     *  */
    public int maxString(String str1,String str2){
        int str1_length = str1.length();
        int str2_length = str2.length();
        char[] ch1 = new char[str1.length()];//存取字符串1的字符数组
        char[] ch2 = new char[str2.length()];//存取字符串2的字符数组
        char[] ch_max=new char[str1.length()] ;//存取子串
        int max=0;
        int temp_max = 0;
        String str_max ="";//将存取子串的字符数组转换为字符串
        int n = 0; //存取子串长度;
        //if(str1_lengt)
        //将字符串1转换为字符数组
        for(int i = 0; i < str1_length; i++){
            ch1[i] = str1.charAt(i);
            
        }
        //将字符串2转换为字符数组
        for(int i = 0; i < str2_length; i++){
            ch2[i] = str2.charAt(i);
                    
        }
        
        for(int i = 0; i < str1_length; i++)//对第一个字符数组进行遍历
        {
                int k = i;
            for(int j = 0;j < str2_length; j++){//对第二个字符数组进行遍历
                int m = j;
                
                if(ch1[i] == ch2[j])//如果一发现第一个数组的 当前元素 与第二数组的摸个元素相同 则开始比较第二个元素
                {  
                     n=0;
                     k = i;
                    temp_max = 0;//临时变量 当前最大子串长度
                    //上面三个变量 每次找到第一个字符数组的元素 与第二字符数组元素相等时候 初始化。
                    ch_max[n]= ch1[i];//存取相同的子串
                    temp_max++;//开始比较两个字符数组下一个元素是否相同
                     m++;
                     k++;
                    for(; m < str2_length && k < str1_length;m++)
                    {   
                        
                     
                        if(ch2[m]==ch1[k])//两个字符数组的下一个元素相同 一直循环
                        {
                            temp_max++;//相同一回 则 临时最大值加1
                            n++;//存取子串的下标加1
                            //System.out.println(n);
                            ch_max[n]=ch1[k];//存取相同的元素
                            k++;//str1下标加1 继续比较两个字符数组的下一个元素
                            
                        }
                        else
                        {
                            
                            
                          break;//只要有一个不相等 退出循环
                        }
                    }//end third for
                    
                    if(temp_max > max)//存取最大子串疮毒 将最大子串转换为字符串 存入str_max
                    {
                        max = temp_max;
                        str_max = new String(ch_max);
                        //System.out.println(str_max);
                        
                    }
                        
                }//end if(ch1[i] == ch2[j]
                    
                }//end second for
                
                
                
            }//end first for
            
        
        System.out.println(str_max);
        return max;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值