【题解】最长公共连续子串

最长公共连续子串

http://www.nowcoder.com/questionTerminal/276712b113c6456c8cf31c5073a4f9d7

牛牛有两个字符串(可能包含空格),牛牛想找出其中最长的公共连续子串,希望你能帮助他,并输出其长度。

输入描述:
输入为两行字符串(可能包含空格),长度均小于等于50.

输出描述:
输出为一个整数,表示最长公共连续子串的长度。

示例1
输入

abcde
abgde

输出

2

设第一个字符串为a,第二个字符串为b,dp[i][j]表示a以i结尾的子串和b以j结尾的子串的最长公共连续子串的长度
则,如果a[i]==b[j],那么dp[i][j]=dp[i-1][j-1]+1

#include<iostream>

using namespace std;

int main()
{
    string a,b;
    getline(cin,a);
    getline(cin,b);
    int lena = a.length();
    int lenb = b.length();
    int dp[100][100];
    int ans = 0;
    for(int i = 0 ; i < lena ; i++)
    {
        for(int j = 0 ; j < lenb ; j++)
        {
            if(a[i]==b[j])
            {
                if(i==0||j==0)
                {
                    dp[i][j]=1;
                    ans=max(dp[i][j],ans);
                }
                else{
                    dp[i][j]=dp[i-1][j-1]+1;
                    ans=max(dp[i][j],ans);
                }
            }
        }
    }
    cout<<ans<<endl;

    return 0;
}
全部评论

相关推荐

点赞 评论 收藏
分享
05-19 15:21
已编辑
华南农业大学 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
每晚夜里独自颤抖:把华北改为华南再试一试,应该就没啥问题了。改完可能都不用投,别人主动联系了。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 16:15
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

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