Manacher_最长回文子串

例题
参考博客

#include
#include
#include
#include
using namespace std;
const int N=110010;
char str[N];
char cpy[N*2];
int rad[N*2];
void init()
{
    cpy[0]='@';
    int n=strlen(str);
    for(int i=0;ii)
        {
            rad[i]=ma-ima)//更新右边界
        {
            id=i;
            ma=id+rad[i];

        }
    }
    int mx=0;
    for(int i=1;imx) mx=rad[i];
    }
    printf("%d\n",mx-1);
}
 int main()
 {
     int j=0;
     while(~scanf("%s",str))
     {
         init();
        manacher();
     }
 }

你可能感兴趣的:(Manacher_最长回文子串)