字符串搜索算法(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"