exKMP 学习小记
来源:互联网 发布:安卓大尺度直播软件 编辑:程序博客网 时间:2024/06/06 01:06
Text
给定文本串S,模板串T
n=|S|,m=|T|
数组ex[i]表示S以i这个位置开头的后缀与T的最长公共前缀的长度
要求在线性的时间内求出ext[1..n]
显然,若某个ext[i]=m,那么说明找到了一个T
因此我们将其看作KMP问题的扩展
实际上这个算法与KMP完全不同,个人认为它反而与manacher有几分神似
设辅助数组next[i]表示T中以i这个位置开始的后缀和T的最长公共前缀的长度
假设ext[1~i-1]都算出来了,考虑要求ext[i]
设ext[1~i-1]向右匹配最右延伸到了p这个位置,严格的说
那么S[id~p]和T[1~p-id+1]是已经匹配了的
也就是说S[i~p]和T[i-id+1~p-id+1]是已经匹配了的
设len=next[i-id+1]
分情况讨论
如果
如果
真的和manacher有几分神似。。
那么现在问题就是求next
发现next就是T和自己做exKMP,类似处理。就这一点来讲又像KMP
分析复杂度
十分 肯定 的,匹配失败的次数是O(n)的,每匹配成功一次,p都会向右移一位,p的右移次数是n,所以总复杂度也是O(N)的
阅读全文
0 0
- exKMP 学习小记
- exkmp
- Exkmp
- 学习小记
- 学习小记
- 学习小记
- 学习小记
- EXKMP 模板
- 【小记】深度学习学习
- Maven学习小记
- struts-helloapp 学习小记
- struts-helloapp学习小记
- 正则表达式学习小记
- Hibernate学习小记
- c++primer学习小记
- Log4j学习小记
- java 学习小记
- C++Primer学习小记
- 关于正则化的理解
- C语言的操作符
- scikit-learn 中文文档-特征选择-监督学习|ApacheCN
- leetcode 155. Min Stack
- nodeJS
- exKMP 学习小记
- TextView中动态显示某些值
- 最新十大web安全隐患-四年之后,OWASP发布新版本OWASP Top10 2017
- ubuntu 16.04下编译GLFW
- JAVA11.6作业
- nodeJS
- java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
- 深度优先搜索(dfs)
- vue.js中文社区Demo:vue全家桶,muse-ui