kmp匹配
来源:互联网 发布:网络乞丐mc吴迪 编辑:程序博客网 时间:2024/06/10 22:07
主串与模式串匹配,关键在于主串不回溯,模式串进行特殊编码,对比与bf算法的异同
s="ababcabcabcacbab"t="abcac"#s="hasdefregrtshgtrhrthrth"#t="hrthry"#t="abcaababc"slen=len(s)tlen=len(t)next=[0]*len(t)def KMP(): i = 0 j = 0 o=0 while i < slen and j < tlen: o+=1 #将next数组的首位设为-1 if s[i] == t[j] or j==-1: i += 1 j += 1 #i,j对应字段不相等 else: #获取编码 j = next[j] print("O(x)=",o) if j >= tlen: return i - tlen else: return 0"""将模式串从头至尾与模式串从头至尾进行比较,对模式串进行编码next函数关键重点是1.两个字段相等,i与j都增加2.两个字段不等i==0,j增加3.两个字段不等i!=0,i=0,不能错过j对应的字段与首位的比较"""#求next数组值def getNext(): i=0 j=1 # next[0]=-1 while j<len(t): #print("j=",j) #print("i=", i) #print(next) #判断是否相等,相等就都增加 if t[i]==t[j]: #给过值,不在给值 if next[j]==0: next[j] = i i+=1 j+=1 #不相等,并且i等于0, elif i==0: if next[j] == 0: next[j] = i j += 1 #不相等,并且i不等于0,将i设为0,j不变,判断后面的字符是否与 elif i!=0: if next[j] == 0: next[j] = i i=0 print(next)getNext()print(KMP())
0 0
- kmp匹配
- kmp匹配
- 模式匹配---KMP算法
- kmp 模式匹配。。。。
- 模式匹配 KMP算法
- 模式匹配-KMP算法
- KMP 字符串匹配算法
- KMP模式匹配算法
- KMP模式匹配
- kmp字符串匹配算法
- kmp字符匹配算法
- KMP模式匹配
- KMP模式匹配
- kmp字符串匹配算法
- KMP字符串匹配算法
- KMP模式匹配算法
- 字符串匹配算法-kmp
- KMP匹配算法详解
- Core Animation Core Graphics UIkit 关系
- 谈谈 iOS 中图片的解压缩
- 第57篇一对多实现之私有白板向老师端传图片数据(四)新建一个iframe及成功获取私有白板数据 周日
- C++第一次实验--项目1(程家琦)
- Linux命令:mkdir
- kmp匹配
- SpringMVC-学习笔记(1)——理解MVC及快速入门
- jquery ajax 的传值问题
- (django问题)连接数据库mysql(python-mysql)
- Java的运行原理
- <input type="file">设置的onchange只能执行一次的解决方案
- 安装多个jdk
- Seasar2 中文——快速入门
- ThreadLocal