找字符串中最长回文(Manacher算法)
来源:互联网 发布:怎么学java开发工程师 编辑:程序博客网 时间:2024/06/05 22:34
字符串长度不是很长:
九度OJ题目:click here~~
动态规划就可A
AC_CODE
const int maxn = 108 ;int solve(string s){ int n = s.size() ; bool table[maxn][maxn] = {false} ; int i , j , len , maxlen ; for(i = 0;i < n ;i++){ table[i][i] = true ; maxlen = 1 ; } for(i = 0;i < n -1 ;i++){ if(s[i] == s[i + 1]) { table[i][i+1] = true ; maxlen = 2 ; } } for(len = 3;len <= n;len++){ for(i = 0;i < n -len + 1;i++){ j = i + len - 1 ; if(s[i] == s[j] && table[i+1][j-1]) { table[i][j] = true ; maxlen = len ; } } } return maxlen ;}int main(){ string s ; while(cin >> s){ cout << solve(s) << endl ; } return 0 ;}
字符串长度很长:
九度OJ题目:click here~~
Manacher算法,线性
这两篇博客介绍了Manacher算法,说的很好,看了就明白~
http://blog.csdn.net/ggggiqnypgjg/article/details/6645824
http://www.felix021.com/blog/read.php?2040
AC_CODE
const int maxn = 200002 ;int solve(char s[]){ int p[2*maxn] , i , j , id = 0, mx = 0; memset(p , 0 , sizeof(p)) ; for(int i = 1;s[i] != '\0';i++){ p[i] = (mx > i ? min(p[2*id - i] , mx - i) : 1) ; while(s[i - p[i]] == s[i + p[i]]) p[i]++ ; if(mx < i + p[i]){ mx = i + p[i] ; id = i ; } } return *max_element(p , p + strlen(s)) - 1;}int main(){ int i , j , k ; char s[maxn] ; while(scanf("%s",s) != EOF){ int t = 0 ; int n = strlen(s) ; char ss[2*n + 8] ; ss[t++] = '$' ; for(i = 0; s[i] != '\0';i++){ ss[t++] = '#' ; ss[t++] = s[i] ; } ss[t++] = '#' ; ss[t] = '\0' ; cout << solve(ss) << endl ; } return 0 ;}
0 0
- 找字符串中最长回文(Manacher算法)
- 最长回文字符串(manacher算法)
- 最长回文字符串(Manacher算法)
- 最长回文字符串(manacher算法)
- 最长回文字符串--manacher算法
- 最长回文字符串 manacher算法
- manacher算法(最长回文字符串)
- 最长回文字符串 manacher算法
- Manacher算法-求字符串中最长回文串
- 最长回文(Manacher算法)
- 【字符串处理】最长回文子串笔记(Manacher算法)
- 【转载】最长回文字符串(manacher算法)
- java manacher算法计算最长回文字符串
- Manacher算法——找字符串最长的回文子串
- 最长回文字符串Manacher
- MANACHER最长回文算法
- hdoj 最长回文 3068 (字符串&manacher)
- 最长回文字符串(Manacher Algorithm)
- 18、Cocos2dx 3.0游戏开发找小三之cocos2d-x,请问你是怎么调度的咩
- AWK 简明教程
- java中的回车符(\r)----在cmd和eclipse(Version: Kepler Service Release 2)中显示区别
- 典型环节(或系统)的频率特性测量
- 飞思卡尔MCU自定义中断向量的相关问题 bootloader程序过程中的问题
- 找字符串中最长回文(Manacher算法)
- 语记本(个人App官方博客)
- C语言智力拼图问题,请求大神!
- debian 基础知识
- HDU 4710 Game(多校第十场)
- RHEL6.3 无法挂载ntfs硬盘解决
- 漫画《我》(一个程序员亲手画的)
- 黑马程序员_网络编程
- 超慢速移动动画使用CSS3实现流畅效果