5. Longest Palindromic Substring
来源:互联网 发布:十堰房产每日成交数据 编辑:程序博客网 时间:2024/06/03 23:03
寻找最长回文子串——Manacher 算法,时间复杂度是O(n)
网上看到的资料中感觉这一篇是讲的最清楚的:最长回文子串——Manacher 算法 - 曾会玩 - SegmentFault
下面说明一下可能存在的一个疑问:
当i
在MaxRight
的左边时,
若RL[2 * pos - i] != MaxRight - i
,
则RL[i] = min(RL[2 * pos - i], MaxRight - i)
(根据对称性推出),
而当RL[2 * pos - i] == MaxRight - i
,
则RL[i] >= MaxRight - i
,需要继续扩展以得到RL[i]
。
贴出我的c代码,3ms
#define min(x, y) ((x) < (y) ? (x) : (y))#define max(x, y) ((x) > (y) ? (x) : (y))char* longestPalindrome(char* s) { int l = strlen(s), mxr = 0, pos1 = 0, mxl = 0, pos2 = 0; char s1[2 * l + 1]; int rl[2 * l + 1]; s1[0] = '#'; for(int i = 0; i < l; i++){ s1[2 * i + 1] = s[i]; s1[2 * i + 2] = '#'; } l = 2 * l + 1; for(int i = 0; i < l; i++){ if(i < mxr - 1){ rl[i] = min(rl[2 * pos1 - i], mxr - i); } else{ rl[i] = 1; } while(i - rl[i] >= 0 && i + rl[i] < l){ if(s1[i - rl[i]] == s1[i + rl[i]]) rl[i]++; else break; } if(mxr < i + rl[i]){ mxr = i + rl[i]; pos1 = i; } if(mxl < rl[i] - 1){ mxl = rl[i] - 1; pos2 = i; } } s[(pos2 - mxl) / 2 + mxl] = '\0'; //(pos2 - mxl) even:'#' odd:s[] return s + (pos2 - mxl) / 2;}
阅读全文
0 0
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 求字符串中的“最长重复子串”
- nginx入门级配置案例
- 多线程下双重检查锁的问题及解决方法
- JAVA集合知识点汇总<一> List集合
- 软中断知识
- 5. Longest Palindromic Substring
- python入门(三十八):自定义线程池
- web.xml中load-on-startup的作用(转载)
- codeigniter读取数据库的公共配置并全局缓存的实现方案
- 设计模式之外观模式
- nodejs 关于log4js输出到指定文件中
- JAVA集合知识点汇总<二> Set集合
- NScoder / NScoding (iOS对象序列化与反序列化)
- 类和对象