这两天又看了一遍《算法导论》上面的字符串匹配那一节,下面是实现的几个程序,可能有错误,仅供参考和交流。关于详细的讲解,网上有很多,大多数算法及数据结构书中都应该有涉及,由于时间限制,在这就不重复了。需要说明的是: stra:主串,及需要从中寻找模式串的字符串 strb:模式串 《算法导论》上面包括严...
分类:
其他好文 时间:
2014-07-22 23:08:34
阅读次数:
320
题意:给一个字符串,问最长的一个子串A,他是前缀,同时是后缀,并且中间也出现过A。并且出现的三个A都不没有重叠部分。
解法:先KMP求出失配数组,然后将所有的是后缀且是前缀的打上标记,然后遍历整个next数组,(对于每个位置的next来说,一直next向前取就是找到此前缀的一个个是整个字符串前缀的后缀,比较绕)暴力枚举判断每个串的所有匹配前缀的后缀是否合法。
代码:/*****...
分类:
其他好文 时间:
2014-05-02 19:36:54
阅读次数:
476
ji
克努特-莫里斯-普拉特算法,简称KMP算法。...
分类:
其他好文 时间:
2014-05-01 18:18:07
阅读次数:
327
字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB
ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科...
分类:
其他好文 时间:
2014-05-01 08:40:55
阅读次数:
316
在串匹配模式中,KMP算法较蛮力法是高效的算法,我觉得其中最重要的一点就是求next数组:看了很多资料才弄明白求next数组是怎么求的,我发现我的忘性真的比记性大很多,每次看到KMP算法求next数组都得花很长时间去看怎么求,虽然看了很多遍了,但还是容易忘,所以我今天非得把它记下来,这样我下次看到的...
分类:
其他好文 时间:
2014-04-29 19:26:58
阅读次数:
429
1 #include 2 #include 3 using namespace std; 4 5 6
7 class myString 8 { 9 private: 10 string mainstr; 11 int size; ...
分类:
其他好文 时间:
2014-04-27 20:45:57
阅读次数:
591