python高效搜索 Boyer-Moore 算法如何使用
时间: 2023-02-24 14:02:01 浏览: 120
Boyer-Moore算法是一种高效的字符串匹配算法,它可以在线性的时间内找到文本中的字符串匹配。该算法的核心思想是通过预处理,预估坏字符的距离,从而跳过一些不必要的匹配比较。
以下是使用Boyer-Moore算法的一个简单的Python示例:
```
def boyer_moore(text, pattern):
n = len(text)
m = len(pattern)
right = [-1] * 256
for j in range(m):
right[ord(pattern[j])] = j
i = 0
while i <= n - m:
skip = 0
for j in range(m - 1, -1, -1):
if pattern[j] != text[i + j]:
skip = max(1, j - right[ord(text[i + j])])
break
if skip == 0:
return i
i += skip
return -1
text = "This is a sample text."
pattern = "sample"
result = boyer_moore(text, pattern)
if result == -1:
print("Pattern not found.")
else:
print("Pattern found at index ", result)
```
该示例使用Boyer-Moore算法在给定的文本中查找给定的字符串模式。算法首先预处理了坏字符表,然后从左到右扫描文本,每次移动匹配的位置,直到找到匹配或扫描完所有字符串。
阅读全文