
字符串匹配
北冥有鱼555
北大的一枚小博士
展开
-
KMP算法
KMP这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到Jake Boxer的文章,我才真正理解这种算法。下面,我用自己的语言,试图写一篇比较好懂的KMP算法解释。 1. 首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。 2.转载 2015-08-14 08:37:16 · 358 阅读 · 0 评论 -
KMP算法--next数组
通过上文完全可以对kmp算法的原理有个清晰的了解,那么下一步就是编程实现了,其中最重要的就是如何根据待匹配的模版字符串求出对应每一位的最大相同前后缀的长度。我先给出我的代码: 1 void makeNext(const char P[],int next[]) 2 { 3 int q,k;//q:模版字符串下标;k:最大前后缀长度 4 int m = strlen转载 2015-08-15 11:58:14 · 342 阅读 · 0 评论 -
trie树
今天看了很多关于trie树的文章,也学习了不少,网上的讲解大多数是一样的,有的就是简单的说几句就给出代码,那现在想自己写一下关于trie数的感想以及简单的实现(因为目前没有做相应的ACM题目,所以代码中用了很多c++库的东西,没有严格的按ACM风格写,就当是复习c++吧)。 这篇文章是我第一次学习trie树写的,以后还会改进,有讲的不好的地方也请见谅。 trie树其实是解决原创 2015-08-17 16:34:30 · 319 阅读 · 0 评论 -
再讲KMP算法
真正理解KMP 今天我想再仔细讲一下这个算法,因为通过不断的做题,我发现,这个算法真的很有用。因为我是主要搞图论的,所以一般碰到字符串的题目都是把题意讲给队友听,然后去看其他题,可是这也凸显了一个弊端,就是有些水题我做不出来,原因很简单,我自己不会写KMP。自己博客有个字符串匹配的专题,我看了一下是之前转发的别人的,而且觉得讲的也不是很好,所以趁着自己搞懂了,今天我就自己写一下对KM原创 2016-10-09 19:57:07 · 406 阅读 · 0 评论