s[]为加了特殊符号的数组
p[]为用来表示以i为中心的回文子串
pR表示当前最大的回文子串长度,index表示当前最大回文子串的中心
int Manacher(){ int i, pR=0, index; int max=Integer.MIN_VALUE; for( i=0; ii ? Min(p[2*index-i], pR-i) :1; while(i+p[i] -1) if(s[i+p[i]]==s[i-p[i]]) p[i]++; if( i+p[i]>pR) { pR=i+p[i]; index=i; } max=Math.max(max, p[i]); } return max-1;}