标签:模板 bsp col else 算法 class code ++ ret
1 //Manacher算法 求最长回文子串 2 int Init(){ 3 int len=strlen(s); 4 s_new[0]=‘$‘;s_new[1]=‘#‘; 5 int j=2; 6 for(int i=0;i<len;i++){ 7 s_new[j++]=s[i]; 8 s_new[j++]=‘#‘; 9 } 10 s_new[j]=‘\0‘; 11 return j; 12 } 13 14 int Manacher(){ 15 int len=Init(); 16 int max_len=-1; 17 int id,mx=0; 18 for(int i=1;i<len;i++){ 19 if(i<mx) p[i]=min(p[2*id-i],mx-i); 20 else p[i]=1; 21 while(s_new[i-p[i]]==s_new[i+p[i]]) p[i]++; 22 if(mx<i+p[i]) {id=i;mx=i+p[i];} 23 max_len=max(max_len,p[i]-1); 24 } 25 return max_len; 26 }
标签:模板 bsp col else 算法 class code ++ ret
原文地址:http://www.cnblogs.com/Leonard-/p/7667437.html