题目链接:https://www.luogu.org/problem/P3805
/*
洛谷 P3805 【模板】manacher算法
给出一个字符串,求回文长度
aaa
ans:
3
*/
#include<bits/stdc++.h>
#define M 11000010
using namespace std;
char S[M],new_S[M];
int p[2*M],tot;
void init_manacher()
{
int len=strlen(S);
new_S[tot++]='@';
new_S[tot++]='#';
for(int i=0;i<len;i++)
{
new_S[tot++]=S[i];
new_S[tot++]='#';
}
new_S[tot++]='!';
}
int manacher()
{
int ans=0,id,mx=0;
for(int i=1;i<tot;i++)
{
if(i<mx)
p[i]=min(p[2*id-i],mx-i);
else
p[i]=1;
while(new_S[i+p[i]]==new_S[i-p[i]]) ++p[i];
if(i+p[i]>mx)
mx=i+p[i],id=i;
ans=max(ans,p[i]);
}
return ans-1;
}
int main()
{
scanf("%s",S);
init_manacher();
printf("%d\n",manacher());
}