牛牛有两个字符串(可能包含空格),牛牛想找出其中最长的公共连续子串,希望你能帮助他,并输出其长度。
输入描述:
输入为两行字符串(可能包含空格),长度均小于等于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;
}
京公网安备 11010502036488号