参考文章(3条消息) 字符串模式匹配KMP算法详解(Python语言)_Sual-CSDN博客_kmp算法pythonqg
该文章对原理讲的很详细,我就不补充了,但是当字符串中出现多个匹配模板,只返回第一个模板的索引。不够完善,本文添加了多匹配实现,原理跟单匹配一样,只是增加了列表,将每个模板匹配的索引记录下来即可。
代码如下:
def kmp_m(self, S, T):
i = 0
j = 0
res = []
next = self.get_next(T)
while i < len(S) and j < len(T):
if j == -1 or S[i] == T[j]:
i += 1
j += 1
else:
j = next[j]
if j == len(T):
res.append(i - j)
i+=1
j=0
if res:
return res
else:
return -1
S为待查找的字符串,T为模板字符串