参考链接: 阮一峰 字符串匹配的Boyer-Moore算法
感谢作者分享!
文中demo使用Python3实现。
待完成:好后缀规则。
其他:学习Python中,若demo中有Python相关或其他错误,请稍加批判。
def string_match_boyer_moore(string,match,start=0):
string_len = len(string)
match_len = len(match)
end = match_len - 1
print (string)
print (match)
print ('******')
if string_len < match_len:
print ('Not Found')
return start;
while string[end] == match[end]:
end -= 1
if end == 0:
print ('Success Position:' + str(start))
return
idx = contain_char(match,string[end])
shift = match_len
if idx > -1:
shift = end - idx
start += shift
string_match_boyer_moore(string[shift:],match,start)
def contain_char(s,c):
for i in range(len(s)):
if c == s[i]:
return i
return -1
string_match_boyer_moore('here is a simple example','example')