给你 2 个字符串(可能包括数字以及标点),长度不超过 50124,请你求出最长的连续的公共子序列。
输入格式
输入有 2 个字符串 A,B,各占一行。
输出格式
输出字符串 A 和 B 的最长连续公共子序列的长度 L。
样例
input
aaa aba
output
1
非常神奇的dp与滚动数组,存档学习一下
#include <iostream>
#define N 50130
using namespace std;
int dp[N]={0};
int get(string a,string b)
{
int len1=a.size();
int len2=b.size();
int ans=0;
for(int i=0;i<len1;i++)
{
for(int j=len2-1;j>=0;j--)
{
if(a[i]==b[j])
{
if(j==0)
dp[0]=1;
dp[j]=dp[j-1]+1;
}
else
dp[j]=0;
ans=max(dp[j],ans);
}
}
return ans;
}
int main()
{
string a,b;
cin>>a>>b;
int ans=get(a,b);
cout<<ans<<endl;
return 0;
}