WA第三个点,输出2,应输出5。 代码如下:
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
using namespace std;
const ll N=10005;
ull n,arr[N],sum=1,xyc[N],lzx[N],brr[N],ans;
string a,b;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>a>>b;
xyc[0]=lzx[0]=1;
for(int i=1;i<=a.size();i++) xyc[i]=xyc[i-1]*271,arr[i]=arr[i-1]+a[i-1]*xyc[i-1];
for(int i=1;i<=b.size();i++) lzx[i]=lzx[i-1]*271,brr[i]=brr[i-1]+b[i-1]*lzx[i-1];
for(ull i=1;i<=a.size();i++){
for(ull j=i;j<=a.size();j++){
for(ull k=1;k<=b.size();k++){
for(ull n=k;n<=b.size();n++){
if(j-i!=n-k) continue;
if(i>k) {
ull h=arr[n]-arr[k-1],h1=brr[j]-brr[i-1];
if(h*lzx[k-i]==h1) ans=max(ans,j-i+1);
}
else{
ull h=arr[j]-arr[i-1],h1=brr[n]-brr[k-1];
if(h*xyc[k-i]==h1) ans=max(ans,j-i+1);
}
}
}
}
}
cout<<ans;
return 0;
}