码迷,mamicode.com
首页 > 其他好文 > 详细

manacher模板整理

时间:2018-10-15 14:51:26      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:==   int   div   span   整理   长度   code   nbsp   pre   

//p[]为最长回文半径长度,id为当前最靠右端回文串的中心点(多个取最靠左),mx为id对应的回文串的最右端坐标+1
void
manacher(char *s,int len){ p[0] = 1; int mx = 0 , id = 0; for(int i = 1 ;i < len ; i ++){ p[i] = mx > i ? min(p[id*2 - i],mx-i) : 1; while(s[i+p[i]] == s[i-p[i]]) p[i] ++; if(i+p[i] > mx){ id = i; mx = i +p[i]; } } }

 

manacher模板整理

标签:==   int   div   span   整理   长度   code   nbsp   pre   

原文地址:https://www.cnblogs.com/dyzll/p/9790258.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!