- 8
- 0
- 约8.53千字
- 约 10页
- 2018-04-02 发布于湖北
- 举报
KMP算法详解及Java实现
KMP算法详解及Java实现
KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);而KMP匹配算法,可以证明它的时间复杂度为O(m+n)。
KMP的历史
Cook于1970年证明的一个理论得到,任何一个可以使用被称为下推自动机的计算机抽象模型来解决的问题,也可以使用一个实际的计算机(更精确的说,使用一个随机存取机)在与问题规模对应的时间内解决。特别地,这个理论暗示存在着一个算法可以在大约m+n的时间内解决模式匹配问题,这里m和n分别是存储文本和模式串数组的最大索引。Knuth?和Pratt努力地重建了?Cook的证明,由此创建了这个模式匹配算法。大概是同一时间,Morris在考虑设计一个文本编辑器的实际问题的过程中创建了差不多是同样的算法。这里可以看到并不是所有的算法都是“灵光一现”中被发现的,而理论化的计算机科学确实在一些时候会应用到实际的应用中。
暴力匹配算法
先来看一个暴力匹配(Brute Force)算法的函数:
public static int bf(char[] S, char[] T) {
// 检查参数
if (S == null || T == null || S.length == 0 || T.length == 0 || T.length S.length) {
return -1;
原创力文档

文档评论(0)