最长回文字符串 manacher算法
来源:互联网 发布:网络打字员工作 编辑:程序博客网 时间:2024/05/16 17:48
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int N = 1000005;char str[N];char sc[2*N+10];int p[N*2+10];int main(){ int i, len, maxx, ai, k=1; while(~scanf("%s", str)) { if(strcmp(str,"END")==0) break; len = strlen(str); sc[0]='$'; for(i=0; i<=len; i++)//注意是等于len,把空字符给了sc的最后一位 { sc[i*2+1]='#'; sc[i*2+2]=str[i]; } int ans = 0; ai=0; maxx=0; memset(p,0,sizeof(p)); for(i=1; i<len*2+2; i++) { if(maxx>i) p[i]=min(p[2*ai-i], maxx-i);//这个网上有很多介绍,对称点2*ai-i
//如果超过ai所能到达的最右边的位置也就是maxx-i,最后取其中较小者。 else p[i]=1; while(sc[i-p[i]]==sc[i+p[i]]) { p[i]++; } if(maxx<i+p[i]) { maxx=p[i]+i; ai=i; } if(ans<p[i]) { ans=p[i]; } } printf("Case %d: %d\n", k++ ,ans-1); } return 0;}
0 0
- 最长回文字符串(manacher算法)
- 最长回文字符串--manacher算法
- 最长回文字符串 manacher算法
- manacher算法(最长回文字符串)
- 最长回文字符串 manacher算法
- 最长回文字符串(manacher算法)
- 【转载】最长回文字符串(manacher算法)
- java manacher算法计算最长回文字符串
- 最长回文字符串(Manacher算法)
- 最长回文字符串Manacher
- MANACHER最长回文算法
- 最长回文字符串算法-Manacher’s Algorithm-马拉车算法
- Manacher-求最长回文字符串
- 回文字符串--manacher算法
- hdu3068+hdu3294 最长回文字符串的manacher算法
- 找字符串中最长回文(Manacher算法)
- 字符串之最长回文子串 manacher算法
- 字符串专题小结:Manacher算法求最长回文串
- Android 判断是否能真正上网【转】
- 矩阵乘法小结
- 阿拉丁阿拉蕾
- psql: FATAL: role “username” does not exist
- equals方法相等测试与集成
- 最长回文字符串 manacher算法
- 关于map
- 极客 - 博文20 - 符号平衡问题
- 浅析java多线程之java的内存模型(锁机制前传)
- scripts/kconfig/lxdialog/dialog.h:26:20: fatal error: curses.h: No such file or directory
- Hadoop-01-01 伪分布式环境搭建
- Humble Numbers
- 第一次面试总结--中国电子科学研究院
- JavaScript中的匿名函数及函数的闭包