kmt字符串匹配
2024-09-05 13:12:17
# -*- coding:utf-8 -*-
class StringPattern:
def findAppearance(self, A, lena, B, lenb):
pos=0
tmp = 0
pmtlist= self.pmt(B)
mp=[]
while pos<len(A):
if B[tmp]==A[pos] :
if tmp==len(B)-1:
return pos-tmp
else:
tmp=tmp+1
pos=pos+1
else:
if tmp!=0:
pos=pos-pmtlist[tmp-1]
tmp=0
else:
pos=pos+1
return -1
# write code here
def pmt(self,initialstr=''):
pmtlist=[]
for i in range(len(initialstr)):
prefix=[]
suffix=[]
matchcount=0
substr=initialstr[0:i+1]
for j in range(len(substr)):
prefix.append(substr[0:j-1])
suffix.append(substr[i-j+1:i+1])
#print(substr,prefix,suffix)
for k in prefix:
if k in suffix:
matchcount=len(k)
pmtlist.append(matchcount)
return pmtlist
a=StringPattern()
print(a.findAppearance('abcbabcabfg',11,'abcab',5))
欢迎批评指正!
最新文章
- Dancing Links and Exact Cover
- Codeforces Round #380(div 2)
- cve-2015-5199漏洞分析
- iOS 统计App 的代码总行数
- ASCII编码表
- asp.net读取txt并导入数据库
- pip安装 MySQLDb 和 Django
- OI生涯中三届NOIP(2012-2014)流水账
- MFC对话框中解决回车键、ESC键退出的方法
- js判断年龄是否在0-100之间
- 基于visual Studio2013解决C语言竞赛题之1087数字变换
- Objective-c 中的算术函数和常数的表示
- Gulp实现服务器
- 3-Dom
- 支付宝即时到账DEMO配置与使用
- python_如何设置文件缓冲类型
- Vue之八 HTML5 History模式
- Flask 扩展 自定义扩展
- String总结
- python接口自动化测试(八)-unittest-生成测试报告