求回文串的o(n)算法,实质是对称;
放个链接:https://segmentfault.com/a/1190000003914228
这篇文章讲的很不错;
摘自上述文章:
..........................算了泥懣自己点开看吧;
求最大回文串代码:
1 #include2 using namespace std; 3 char s[1000000]; 4 char ss[1000000]; 5 int p[1000000]; 6 int id,mx; 7 int k; 8 void manacher(char *s) 9 {10 int n=k;11 //for(int i=0;i < <<' ';12 id=0;mx=0;13 for(int i=1;ii)p[i]=min(p[2*id-i],mx-i);16 else p[i]=1;17 while(s[i-p[i]]==s[i+p[i]])p[i]++;18 }19 int idx=0,lo=0;20 for(int i=0;i lo)lo=p[i],idx=i;22 // cout< <<' ';23 }24 for(int i=idx-p[idx]+1;i
很简洁使用的算法;