欢迎点击「算法与编程之美」↑关注我们!
本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
BF算法的思路比较简单,但执行效率太低,例如下题,目标串中蓝色部分,匹配失败后我们可以直接跳到下划线处开始匹配,减少匹配次数,提高执行效率。
蓝色表示匹配成功的字符,红色表示匹配失败的字符(下文均为此)
目标串:BBC ABCDAB ABCDABCDABDE
模式串:ABCDABD
基于此,可以考虑对BF算法进行优化,也就是KMP算法。
以一道具体的问题,来看看算法改进后的匹配过程
目标串:a b a b c a b c a c b a b
模式串:a b c a c
第一次匹配:a b a b c a b c a c b a b
a b c a c