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

最长公共连续子串

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;
}
全部评论

相关推荐

one_t:硕还是本?什么岗
点赞 评论 收藏
分享
小谷围鸡肉卷阿姨:+1,腾子投完一动不动
点赞 评论 收藏
分享
6 收藏 评论
分享
牛客网
牛客企业服务