#include<bits/stdc++.h>
using namespace std;
#define maxn 30000005
char s[maxn],t[maxn];
int ans,f[maxn],len;
int manacher()
{
int mid=1,r=1;
for(int i=1;i<len;i++)
{
if(i<r)
{
f[i]=min(r-i,f[mid*2-i]);
}
else f[i]=1;
while(t[i-f[i]]==t[i+f[i]]) f[i]++;
if(i+f[i]>r)
{
r=i+f[i];
mid=i;
}
ans=max(ans,f[i]-1);
}
return ans;
}
int main()
{
scanf("%s",s);
len=2;
t[0]='&';
t[1]='€';
for(int i=0;i<strlen(s);i++)
{
t[len++]=s[i];
t[len++]='€';
}
t[len]='$';
cout<<manacher();
return 0;
}
感觉我manacher部分写的没有问题啊,那到底是什么原因呢