求解最长回文串 manachar算法
转载:http://blog.sina.com.cn/s/blog_70811e1a01014esn.html
1 for(int i=1;i<len;++i){ 2 if(mx>i) 3 p[i]=min(p[2*id-i],mx-i); //2*id-i是i关于id的对称点 4 else 5 p[i]=1; 6 while(str[i+p[i]]==str[i-p[i]]) 7 p[i]++; 8 if(p[i]+i>mx){ 9 mx=p[i]+i; 10 id=i; 11 } 12 if(p[i]-1>maxn) 13 maxn=p[i]-1; 14 }