前不久接触到KMP算法,它再数组查询上很巧妙,下面就来和大家分享一下
这是比较好的一篇学习资料:
https://www.cnblogs.com/ZuoAndFutureGirl/p/9028287.html
这是具体算法:
下面我就用其中的一个例子来分析一下,这样大家也方便理解一点,同时也有助于我以后的复习:
首先,B与A失配,则j=next[j]=-1
继续向后面匹配,BBC都与A失配,i++持续,j在0,1间;直到A与A匹配,i = 1,j再加一
继续匹配,直到空格与D失配,则j=nezxt[6]=2;,j不变
接下来就是C与空格匹配,结果失配;j= next[j]=0;i不变
接着A与空格匹配,失配;j=next[j]=-1;i不变
之后j++,i++;A与A匹配 继续j++,i++;直到匹配结束