马拉车算法:
void getstr(int l,int r)
{
str.clear();
str.push_back('$');
for(int i=l;i<r;i++)
{
str.push_back('#');
str.push_back(s[i]);
}
str.push_back('#');
}
void manacher()
{
int mx=0,id;
for(int i=1;i<s.size();i++)
{
if(mx>i) p[i]=min(p[2*id-i],mx-i);
else p[i]=1;
while(str[i+p[i]]==str[i-p[i]])
p[i]++;
if(p[i]+i>mx)
mx=p[i]+i,id=i;
}
}
其余之后补上