Kmp算法

前不久接触到KMP算法,它再数组查询上很巧妙,下面就来和大家分享一下

这是比较好的一篇学习资料:
https://www.cnblogs.com/ZuoAndFutureGirl/p/9028287.html

这是具体算法:

Kmp算法

下面我就用其中的一个例子来分析一下,这样大家也方便理解一点,同时也有助于我以后的复习:

首先,B与A失配,则j=next[j]=-1
Kmp算法
继续向后面匹配,BBC都与A失配,i++持续,j在0,1间;直到A与A匹配,i = 1,j再加一
Kmp算法
继续匹配,直到空格与D失配,则j=nezxt[6]=2;,j不变Kmp算法
接下来就是C与空格匹配,结果失配;j= next[j]=0;i不变
Kmp算法
接着A与空格匹配,失配;j=next[j]=-1;i不变
Kmp算法
之后j++,i++;A与A匹配 继续j++,i++;直到匹配结束
Kmp算法