前言:前段时间在网上看了一篇文章,表情包的形式讲解KMP算法,超幽默有爱而且通俗易懂,自己看完搞懂之后整理了一下,以下就给优快云的博友们分享一下啦~
走起~






































因此我们总结一下模式字符串具有公共前后缀的条件:
(1)最长的公共前后缀
(2)长度必须小于指针前所有字符长度


前后图片的变化就是我们将模式串进行移动,使得公共前缀移动到后缀的位置

接下来继续比较!







可以发现这个数组是从0开始的,但是其实无论从0开始还是从1开始都是可以的。





















老板我要抢答,第四位的结果如下:

老板我要抢答。第五位的结果如下:

老板,我要再接着抢答~下面详细说一下吧,包括第六位的详细分析过程:

先找到公共的前后缀:

也就是模式串串的第四位与主串串的当前位置作比较








转换的结果图如下

嗯!!!我终于明白了!比如模式串串1位置上发生了不匹配,则按照我们刚才定义的规则进行执行“1号位与主串串的下一位进行比较”


瞬间把刚才分析的图拿出来!
👇看毛片神图






结尾:好啦,完结了。相信你已经看完啦,也彻底明白了什么叫KMP算法啦~

本文通过幽默风趣的表情包形式,深入浅出地解析了KMP算法的原理与实现过程,让读者在轻松愉快的氛围中掌握这一高效字符串匹配算法。

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



