题解 | #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;
    
    
    
}
    

全部评论

相关推荐

热爱生活的咸鱼在吃瓜:个人建议,项目太简单了,实习干的活都是测试的活,反正又没人知道你实习干啥了,你懂吧
点赞 评论 收藏
分享
在看牛客的社畜很积极:身高体重那一行信息去掉,学校那一行的信息放上面,找半天都没找到你是哪个学校什么专业的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务