博客已经搬家,请前往http://gqqnbig.me/ 阅读格式良好的文章。
本文将一步一步构造Manacher算法,心急的一定看不懂!请先练习下面的习题。
探索最长回文串性质
题1:已知字符串以center为中心对称,求完整的字符串。
abcd???
|
center
答
abcdcba
|
center
题2:接上题,abcdcba后面还有一些字符,以center2...
分类:
编程语言 时间:
2015-02-07 09:06:42
阅读次数:
247
简单来说这是个很水的东西。有点dp的思想吧。推荐两个博客,很详细。http://blog.csdn.net/xingyeyongheng/article/details/9310555http://blog.csdn.net/ggggiqnypgjg/article/details/6645824然...
分类:
编程语言 时间:
2015-01-06 23:04:31
阅读次数:
334
题目大意:给定一个由'a'和'b'构成的字符串,求不连续回文子序列的个数
首先回文一定是将字符串倍增 由于求的是不连续回文子序列的个数 因此我们可以求出总回文子序列的个数,然后减掉连续的
连续的就是回文子串 用Manacher算法可以O(n)求解
不连续的就有些难搞了
首先我们令f[i]表示以i为中心的对称字符对个数
比如s[]=$#a#b#a 那么s[4]='b' f[4]=2
那么...
分类:
编程语言 时间:
2014-12-27 17:40:35
阅读次数:
243
Manacher算法
算法总结第三弹 manacher算法,前面讲了两个字符串相算法——kmp和拓展kmp,这次来还是来总结一个字符串算法,manacher算法,我习惯叫他 “马拉车”算法。
相对于前面介绍的两个算法,Manacher算法的应用范围要狭窄得多,但是它的思想和Z算法有很多共通支出,所以在这里介绍一下。Manacher算法是查找一个字符串的最长回文子串的线性算法。
在介绍算法...
分类:
编程语言 时间:
2014-12-21 16:38:53
阅读次数:
226
问题:给定字符串S,求S中的最长回文子串。
本篇将讨论一个O(N)时间O(N)空间的算法,即著名的Manacher算法,并详细说明其时间复杂度为何是O(N)。
分类:
其他好文 时间:
2014-12-15 23:23:40
阅读次数:
356
这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法.原文地址:http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-algorithm-for-finding-longest-palindrome-sub-...
分类:
其他好文 时间:
2014-11-26 18:38:27
阅读次数:
167
1 const int LEN=110005; 2 const int N=LEN*2; 3 int p[N]; 4 char str[LEN], tmp[N]; 5 //p[i]表示以str[i]为中心的回文往右延伸的 最长长度 6 void manacher(char* str, int* p....
分类:
编程语言 时间:
2014-11-12 21:00:49
阅读次数:
241
PalindromeTime Limit:15000MSMemory Limit:65536KB64bit IO Format:%I64d & %I64uSubmitStatusDescriptionAndy the smart computer science student was attend...
分类:
编程语言 时间:
2014-11-12 21:00:46
阅读次数:
231
题目链接:http://poj.org/problem?id=2217题目大意: 求两个串的最长公共子串,注意子串是连续的,而子序列可以不连续。解题思路:有个炒鸡快的O(n)的Manacher算法。不过只能求裸的最长公共和回文子串。后缀数组解法是这类问题的模板解法。对于n个串的最长公共子串,这要把这...
分类:
编程语言 时间:
2014-10-23 12:09:09
阅读次数:
252