题解 | #MP3光标位置#

公共子串计算

http://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b

#include<iostream>
using namespace std;
#include<string>

int main()
{
    string s1,s2,sh,sl;
    cin>>s1;
    cin>>s2;
    int len1=s1.length(),len2=s2.length(),lenl,lenh;
    //sl为短字符串,sh为长字符串
    if(len1>len2)
    {
       lenh=len1;
        lenl=len2;
        sh=s1;
        sl=s2;
        
    }
    else{
       lenh=len2;
        lenl=len1;
        sh=s2;
        sl=s1; 
    }
    int max1=0,max2=0,k,ii;
    //分三次循环,第一层是短字符串遍历,第二层是长字符串遍历,第三层是while遍历重复的部分,max1为重复部分长度
    //max2为最后的最长重复字符串长度
    for(int i=0;i<lenl;i++)
    {
        
        for(int j=0;j<lenh;j++)
        {
            max1=0;
            ii=i;
            k=j;
            while(1)
            {
                
                if(sl[ii]==sh[k])
                {
                    k++;
                    ii++;
                    max1++;
                }
                else{
                    break;
                }
                if(ii>=lenl||k>=lenh)
                {
                    break;
                }
            }
            if(max1>max2)
            {
                max2=max1;
            }
            
            
        }
        
        
        
    }
    cout<<max2<<endl;
    
    
    
}
    

全部评论

相关推荐

沉淀一会:**圣经 1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务