字符串搜索算法(Boyer-Moore)
BM算法简介
- 1977年,德克萨斯大学的 Robert s.Boyer教授和J Strother moore教授发明了在字符串中搜索模式字符串的一种算法。
- BM算法是精确字符串匹配算法,在字符串比对过程中采用从右往左比对方式。
- BM算法基于“坏字符”和“好后缀”两种启发式。
BM算法相关概念
- 坏字符(Bad-Character):在比对过程中,不匹配的字符。
- 好后缀(Good-Suffix):如果字符串匹配失败,则之前已经成功匹配的部分称为好后缀。

字符 “I” 为本次匹配过程中产生的坏字符;后缀“E”、“LE”、“PLE”、“MPLE"为本次匹配过程中产生的好后缀。
“坏字符”启发规则
- 模式字符串后移位数=坏字符对应的模式字符串的位置 - 坏字符在模式字符串前面出现的位置。
- 当坏字符在模式字符串前部不存在时,则标记“坏字符在模式字符串前面出现的位置”为"-1”。

例如在上面匹配过程中,“P”和"E"不匹配,则P为"坏字符",由于P出现在模式字符串的第6位(坐标从0开始),且坏字符P在模式字符串前面岀现的位置为4,所以下一次比对时,模式字符串需要后移6-4=2位。
1501



被折叠的 条评论
为什么被折叠?



