#include <iostream>
using namespace std;
string s,t;
int n,d[22000015],ans = 1,m;
int main()
{
cin >> t;
s[0] = '$',s[++n] = '#';
m = t.size();
for(int i = 0;i < m;i ++)s[++n] = t[i],s[++n] = '#';
d[1] = 1;
for(int i = 2,l = 1,r = 1;i <= n;i ++)
{
if(i <= r && d[r - i + l] + i <= r)d[i] = d[r - i + l];
else if(i <= r)d[i] = r - i + 1;
while(i - d[i] >= 1 && i + d[i] <= n && s[i - d[i]] == s[i + d[i]])d[i] ++;
if(i + d[i] - 1 > r)r = i + d[i] - 1,l = i - d[i] + 1;
ans = max(ans,d[i] - 1);
}
cout << ans ;
}
似乎删掉第10行就变成WA了,但是不懂为什么会RE