马拉车算法:
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; }
}
其余之后补上