字符串搜索之KMP算法(伪代码)
来源:互联网 发布:淘宝直销 编辑:程序博客网 时间:2024/06/07 10:11
之前的Rabin-Karp算法虽然在一定程度上达到了优化,但是最坏情况下也是O(nm)的复杂度。
接下来说说KMP算法,复杂度是线性的O(n+m)
前缀表
• 我们可以预先计算大小为m的前缀表来存储p[q]的
值 (0 <=q < m)
P p a p p a r
q 0 1 2 3 4 5 6
p[q] 0 0 0 1 1 2 0
Knuth-Morris-Pratt 算法
KMP-Search(T,P)
01 pi <- Compute-Prefix-Table(P) //预处理前缀表P
02 q <- 0 // number of characters matched
03 for i <- 0 to n-1 // scan the text from left to right
04 while q > 0 and P[q] <> T[i] do
05 q <- p[q]
06 if P[q] = T[i] then q <- q + 1
07 if q = m then return i – m + 1
08 return –1
Compute-Prefix-Table 是P 上执行KMP 算法的本质.
KMP 的分析
• 最坏运行时间: O(n+m)
– 主算法: O(n)
– Compute-Prefix-Table: O(m)
• 空间: O(m)
0 0
- 字符串搜索之KMP算法(伪代码)
- 字符串搜索之Rabin-Karp 算法(伪代码)
- 字符串搜索之BMH 算法(伪代码)
- KMP字符串匹配(按照《算法导论》伪代码实现)
- KMP字符串匹配算法的伪代码
- KMP算法,字符串搜索
- 快速字符串搜索算法KMP
- 字符串匹配(KMP 算法 含代码)
- 字符串 之 KMP算法
- 字符串之KMP算法
- 字符串之KMP算法
- grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)
- grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)
- grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)
- grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)
- grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)
- grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)
- grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)
- android开发中的MVP详解
- HDU 1253
- 暑假集训--训练1 二分搜索
- 线段树难题--史上最大值nkoj3726
- Android拍照和获取相册图片
- 字符串搜索之KMP算法(伪代码)
- 前端开发必备插件
- 遇到:无法解析类型 java.lang.CharSequence怎么办?
- Android 如何编写基于编译时注解的项目
- 2016年团体程序设计天梯赛-决赛 L2-014. 列车调度 【导弹拦截系统-最长上升子序列nlogn求法】
- 13A - Numbers
- Linux入门(一)-目录和文件系统
- Linux下使用addr2line调试程序的方法
- linux下的redis配置外网问题