Boyer-Moore算法详解教程
字符串匹配里的老司机级算法——BM 算法,效率真是没话说。它跟熟悉的暴力法、KMP不太一样,主打一个“从后往前比”。靠两个招牌动作:坏字符规则和好后缀规则,把搜索窗口滑得飞快,省掉不少无效比较。像长文本、海量数据的场景,用它简直不能再合适。
坏字符的套路挺直接:匹配失败就看那字符在不在模式串里,有就滑到最右边,没有就直接跨过去。这一手滑动距离拉满,简洁又高效。
好后缀规则就稍微复杂点,不过理解了也挺有意思。比如你已经匹配了一段后缀,那它要是前面还有对应的位置,就直接跳过去。没有的话,也有备用方案——跳到最长公共后缀对齐处。
重点来了,预阶段是 BM 的效率关键,别嫌麻烦。搞清楚坏字符表(bmBc
)和好后缀表(bmGs
),搜索时查表一查一个准。长串里找关键词,快得你都想不到。
资源我也帮你找好了,想看源码的、想看 PPT 的,甚至想看看和它类似的算法(像 Sunday、KMP)都安排上了。BM 算法源码也有,直接拿来研究或者封装一波都方便。
如果你刚好在搞编辑器里的查找功能,或者做信息检索、基因比对这些高频匹配操作,BM 真的是一个值推荐的选择。用熟了之后,效率提升不是一点点。
下载地址
用户评论