加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
kmp.py 964 Bytes
一键复制 编辑 原始数据 按行查看 历史
我没得冰阔落 提交于 2023-07-04 09:13 . v1
def build_kmp_table(pattern):
"""
构建KMP算法的部分匹配表
"""
table = [0] * len(pattern)
i = 0
j = 1
while j < len(pattern):
if pattern[i] == pattern[j]:
i += 1
table[j] = i
j += 1
else:
if i != 0:
i = table[i - 1]
else:
table[j] = 0
j += 1
return table
def kmp_search(text, pattern):
"""
使用KMP算法在文本中查找模式串,并返回匹配的起始位置列表
"""
table = build_kmp_table(pattern)
i = 0
j = 0
matches = []
while i < len(text):
if pattern[j] == text[i]:
i += 1
j += 1
if j == len(pattern):
matches.append(i - j)
j = table[j - 1]
else:
if j != 0:
j = table[j - 1]
else:
i += 1
return matches
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化