Untitled
unknown
plain_text
2 years ago
485 B
4
Indexable
def boyer_moore(text, pattern): n = len(text) m = len(pattern) if m == 0: return 0 last = {} for i in range(m): last[pattern[i]] = i i = m - 1 j = m - 1 while i < n: if text[i] == pattern[j]: if j == 0: return i else: i -= 1 j -= 1 else: lo = last.get(text[i], -1) i += m - min(j, lo + 1) j = m - 1 return -1
Editor is loading...