在hihoCoder上发现了比manacher更快的算法, 看上去很暴力,但跑起来蜜汁快,记录一下贴出来
#include <bits/stdc++.h>
using namespace std;
const int N = 1000000 + 10;
char str[N];
int fast(char *str)
{
int ans = 0;
str[0] = '?';
for(int i = 0; str[i]; i++)
{
int s = i, e = i;
while(str[e+1] == str[i]) ++e;
i = e;
while(str[s-1] == str[e+1]) --s, ++e;
ans = max(ans, e - s + 1);
}
return ans;
}
int main()
{
int n;
scanf("%d", &n);
while(n--)
{
scanf("%s", str + 1);
printf("%d\n", fast(str));
}
return 0;
}