拓展KMP详解+(笔记)
来源:互联网 发布:计算机组成原理 知乎 编辑:程序博客网 时间:2024/06/11 22:34
拓展KMP算法详解Blog:http://blog.csdn.net/dyx404514/article/details/41831947
我自己的笔记部分:
拓展KMP(笔记)
拓展KMP是在KMP的基础上得到的。
首先有以下几点:
样例表:
i
0
1
2
3
4
5
6
S
a
a
a
a
b
a
a
T
a
a
a
a
a
extend
4
3
2
1
0
2
1
next
4
4
3
2
1
S:长度为n的母串 T:长度为m的子串
Extend:
Extend[i]表示T与S[I,n-1]的最长公共前缀
Next[i]表示T[I,m-1]与T数组的最长公共前缀
递推结论:
由next[1]= 4得出 T[0,3] = T [1,4] => T[0,2] = T[1,3]
由extend[0]= 4 得出 S[0,3] = T[0,3] => S[1,3] = T[1,3]
那么可以得出 S[1,3] = T[0,2]
那么我们在进行匹配时可以转化为直接判断 S[1,3] 与T[0,2] 是否匹配
由 以上 可得出 S[ po, P ] = T[ 0 , P-po] => S[k+1,P] = T[k-po+1,P-po] len=next[k-po+1]
(注:
其中 po表示得出extend最远距离初始的下标 ,P表示由extend得出的以匹配的最远距离的下标, k表示当前下标 )
更新:
1k+len<P时 => extend[k+1]=len
2k+len>=P时 => 从S[p+1] 和 T[P-k+1]开始匹配,直到失配,得到extend[k+1]+(k+1) 大于P,更新P和po;
拓展KMP复杂度:
O(n+m) (n为母串长,m为子串长)
- 拓展KMP详解+(笔记)
- 拓展KMP算法详解
- HDU 6153 (kmp拓展)
- 【拓展kmp】
- 拓展kmp
- 拓展KMP
- kmp&&拓展kmp
- HDU3613:Best Reward(拓展KMP)
- HDU4333:Revolving Digits(拓展kmp)
- hdu6153 A Secret (拓展KMP)
- Hdu 5782 Cycle(拓展KMP+Hash)
- Best Reward +拓展KMP
- HDU 4763 拓展KMP
- kmp算法及其拓展
- 拓展kmp算法总结
- 拓展kmp模板
- kmp板子及其拓展
- hdu 6153 拓展kmp
- 51nod 1678 容斥原理
- 风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)
- java 动态规划策略原理及例题
- Jedis使用
- HDU
- 拓展KMP详解+(笔记)
- HDU 6162 Ch’s gift
- poj-1661-Help Jimmy
- 常用标签
- 刷题——hdu 6168 Numbers
- SpringMVC+Mybatis+POI 导出Excel
- Java MyBatis 插入数据库返回主键 总返回行数
- shell
- 我们到底该不该使用 force index()索引?