#include <iostream>
#include <string>
using namespace std;
string x,y;
int f[10005][10005];
void MaxLength(int lenx, int leny){
for(int i=0;i<=lenx;i++)
f[i][0]=0;
for(int j=0;j<=leny;j++)
f[0][j]=0;
for(int i=1;i<=lenx;i++){
for(int j=1;j<=leny;j++){
if(x[i-1]==y[j-1])
f[i][j]=f[i-1][j-1]+1;
else
f[i][j]=0;
}
}
}
int main()
{
cin>>x>>y;
int lenx=x.length();
int leny=y.length();
MaxLength(lenx, leny);
int maxlong=0;
int endindex_x=-1;
for(int i=0;i<=lenx;i++){
for(int j=0;j<=leny;j++){
if(f[i][j]>maxlong){
maxlong=f[i][j];
endindex_x=i;
}
}
}
cout<<maxlong<<endl;
for(int i=endindex_x-maxlong;i<endindex_x;i++)
cout<<x[i];
return 0;
}
11077 最长公共子字符串(优先做)
于 2022-10-15 14:06:18 首次发布