昨天做了leetcode里的 Longest Palindromic Substring ,一开始用动态规划O(N^2),不管怎么改都超时了。。。于是在大神的帮助下,找到了传说中的Manacher算法,居然能在O(n)内求出来,瞬间给跪了。
本屌认为,这个算法主要是充分的利用了以前的匹配的结果,来起到了降低时间复杂度的作用,这点跟KMP算是有点类似。在预处理时有个小技巧就是将第0,1为设...
分类:
其他好文 时间:
2014-06-20 12:15:22
阅读次数:
305
字符串匹配
精确:
indexOf(String str); -- strstr(), O(mn)。
lastIndexOf(String str); -- continue 的别样用法。
matches(String regex); -- Regex.compile()/match()。
模糊:
java package?
Spell Checker -- 两个字符串的相似程度...
分类:
编程语言 时间:
2014-06-20 11:00:18
阅读次数:
287
背景朴素匹配算法太低效了。冗余过多,已经比较过的,没必要重复;可以从比较结果中推导出来的,也没必要再重复。核心主串不回溯,变化要匹配的串的下一次比较的位置。实现两个函数,一个提供next数组,即存储要匹配的串的每一个元素匹配失败后,下一次要比较的位置的数组。另一个实现匹配。java代码public
...
分类:
其他好文 时间:
2014-06-10 11:32:20
阅读次数:
239
kmp算法。 1 #include 2 #include 3 4 char
src[10005], des[1000005]; 5 int next[10005], total; 6 7 void kmp(char des[],
char src[]){ 8 int ld = str...
分类:
其他好文 时间:
2014-06-09 17:46:37
阅读次数:
264
字符串匹配这也是个老题了,方法主要有下面4种,
1. 暴利破解法(BF),这个没啥说的,就是一轮一轮的比较,知道遇到相匹配的,这个的时间复杂度为O(n^2)。
2. KMP,这应该是字符串匹配领域中最长听说的算法了吧。
3. Horspool算法,这个不常听说,但是也是很有名的。
4. Boyer-Moore,这个听说过的人应该也不会很多,这个算法在大量字符串的情况下,效率是最高的,能达到kmp的3到4倍。
上面四种算法都很重要,一般标准库中的字符串匹配都使用的是暴力法。
上面四种算法详细的见我下面的这几篇...
分类:
其他好文 时间:
2014-06-08 03:19:54
阅读次数:
187
题目来源:Light OJ 1268 Unlucky Strings
题意:给你一些可以用的字符 然后求组成不包含给定字符串的方案数
思路:矩阵经典问题 从i走k步路到达j的方案数 可以用矩阵快速幂求解
对于求长度为n的字符的方案数 就是走n步路 求走法
可以用KMP求出走一步 从前i个字符到前j个字符的方案数 这点有点不好理解 想一想
#include
#include
#...
分类:
其他好文 时间:
2014-06-07 14:33:43
阅读次数:
303
这道题本来想对了,可是因为hdu对pascal语言的限制是我认为自己想错了,结果一看题解发现自己对了……题意:给以字符串计算出以前i个字符为前缀的字符中在主串中出现的次数和如:num(abab)=num(a)+num(ab)+num(aba)+num(abab)=2+2+1+1=6;题解:next[...
分类:
其他好文 时间:
2014-06-06 17:30:22
阅读次数:
227
先去开撸了 把代码 贴上 ^ ^一段 暴力 TLE --一段 AC ---暴力 : TLE 1
#include 2 #include 3 #include 4 using namespace std; 5 6 const int size =
50010; 7 char str[size]...
分类:
其他好文 时间:
2014-06-06 16:22:49
阅读次数:
283
前些日子在为目前该学习什么而苦恼,就问了一下已经从事多年软件开发的表哥,他说一个程序员要走的远,就要学好数据结构和算法,于是我就重新开始学习数据结构和算法了拿起以前上过的数据结构看,看到第四章串的模式匹配时,颇感兴趣,就写了一下程序,实践了一下。感觉还蛮爽,于是就把以下几个重要的函数放在此处,以便后...
分类:
其他好文 时间:
2014-06-04 14:42:40
阅读次数:
312