KMP求子串的next值

视频教程:

https://www.bilibili.com/video/av3246487?from=search&seid=2581354634386413165

笔记如下

数组组成如下:

求子串的next值:

其中i,j对应的为位置,根据其对应位置上的值计算某一位置字母不匹配时回溯的位置,如果两字符相同,则i++,j++,如果两字符不同:i不变,j回溯到前一位置对应的回溯位置。

下图中第一行为字符串,第二行为对应的位置,第三行为回溯位置。

 

KMP求子串的next值_第1张图片

第一步:j=0,i=1,对应a≠b,则在位置1下方填写0。

执行操作:j不变,i++。

第二步:j=0,i=2,对应a≠c,则在位置2下方填写0。

执行操作:j不变,i++。

第三步:j=0,i=3,对应a=a,则在位置3下方填写1。

 

执行操作:j++,i++。

 

KMP求子串的next值_第2张图片

第四步:j=2,i=4,对应b=b,则在位置4下方填写2。

执行操作:j++,i++。

第五步:j=2,i=5,对应c≠y,则在位置3下方填写1。

执行操作:i不变,j回溯到位置2对应的回溯位置0

第六步:j=0,i=5,对应a≠y,则在位置5下方填写0。

结束

 

你可能感兴趣的:(大话数据结构)