前言:前段时间在网上看了一篇文章,表情包的形式讲解KMP算法,超幽默有爱而且通俗易懂,自己看完搞懂之后整理了一下,以下就给CSDN的博友们分享一下啦~
走起~
因此我们总结一下模式字符串具有公共前后缀的条件:
(1)最长的公共前后缀
(2)长度必须小于指针前所有字符长度
前后图片的变化就是我们将模式串进行移动,使得公共前缀移动到后缀的位置
接下来继续比较!
可以发现这个数组是从0开始的,但是其实无论从0开始还是从1开始都是可以的。
老板我要抢答,第四位的结果如下:
老板我要抢答。第五位的结果如下:
老板,我要再接着抢答~下面详细说一下吧,包括第六位的详细分析过程:
先找到公共的前后缀:
也就是模式串串的第四位与主串串的当前位置作比较
转换的结果图如下
嗯!!!我终于明白了!比如模式串串1位置上发生了不匹配,则按照我们刚才定义的规则进行执行“1号位与主串串的下一位进行比较”
瞬间把刚才分析的图拿出来!
👇看毛片神图
结尾:好啦,完结了。相信你已经看完啦,也彻底明白了什么叫KMP算法啦~