MCPcopy
hub / github.com/itcharge/AlgoNote / kmp

Function kmp

codes/python/04_string/string_kmp.py:2–15  ·  view source on GitHub ↗
(T: str, p: str)

Source from the content-addressed store, hash-verified

1# KMP 匹配算法,T 为文本串,p 为模式串
2def kmp(T: str, p: str) -> int:
3 n, m = len(T), len(p)
4
5 next = generateNext(p) # 生成 next 数组
6
7 j = 0 # j 为模式串中当前匹配的位置
8 for i in range(n): # i 为文本串中当前匹配的位置
9 while j > 0 and T[i] != p[j]: # 如果模式串匹配不成功, 将模式串进行回退, j == 0 时停止回退
10 j = next[j - 1]
11 if T[i] == p[j]: # 当前模式串前缀匹配成功,令 j += 1,继续匹配
12 j += 1
13 if j == m: # 当前模式串完全匹配成功,返回匹配开始位置
14 return i - j + 1
15 return -1 # 匹配失败,返回 -1
16
17
18# 生成 next 数组

Callers 1

string_kmp.pyFile · 0.85

Calls 1

generateNextFunction · 0.85

Tested by

no test coverage detected