rt
样例过了
但是会这样:
输入 abcdcbae
输出 7,但是会提示RE
#include<bits/stdc++.h>
using namespace std;
string s,c;
int p[25000000],n,mx = 0,id = 0;
int main(){
cin >> s;
n = s.length();
c[1] = '^';
for(int i = 1; i <= n; i++){
c[2*i] = '$';
c[2*i+1] = s[i-1];
}
c[n*2+2] = '$';
c[n*2+3] = '@';
for(int i = 1; i <= n*2+3; i++){
p[i] = (mx>i?min(p[2*id-i],mx-i):1);
while(i-p[i]>=1&&i+p[i]<=2*n+3&&c[i-p[i]]==c[i+p[i]]){
p[i]++;
}
if(i+p[i]>mx){
mx = i+p[i];
id = i;
}
}
int ans = 0;
for(int i = 1; i <= 2*n+3; i++) ans = max(ans,p[i]);
printf("%d",ans-1);
return 0;
}