您的位置:首页 > 其它

manacher

2016-01-06 15:38 375 查看
1 void manacher(){
2     int res = 0, id = 0;
3     for(int i = 1; i <= m; i++) {
4         if(res > i){
5             p[i] = min(p[2 * id - i], res - i);
6         }
7         else{
8             p[i] = 1;
9         }
10         //p[i] = mx > i? min(mp[2*id-i], mx-i): 1;
11         while(s[i + p[i]] == s[i - p[i]]){
12             p[i]++;
13         }
14         //while(s[i+mp[i]] == s[i-mp[i]]) mp[i]++;
15         if(i + p[i] > res) {
16             res = i + p[i];
17             id = i;
18         }
19     }
20 }


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: