【3】5 KMP 手算 next 数组及 nextval 数组

考研中最常考的就是求一个模式串的 next 以及 nextval 数组(手算即可)!

 

串的前缀:包含第一个字符,且不包含最后一个字符的子串。
串的后缀:包含最后一个字符,且不包含第一个字符的子串。

 

当第 j 个字符匹配失败,由前 1~j-1  个字符组成的串记为 S。则:  next[ j ] = S 的最长相等前后缀长度 +1 。  特别的 next[ 1]=0
==>  所以很容易得出 next[1] =0 , next[2] =1 

 

 

【3】5 KMP 手算 next 数组及 nextval 数组

 

 

 

 

 

【3】5 KMP 手算 next 数组及 nextval 数组

如果不经常出现子串与模式串部分匹配问题,那么 KMP 算法也没屌多少!所以 朴素模式匹配算法现在还在被广泛使用!

 

 

 

 

【nextval 数组】

【3】5 KMP 手算 next 数组及 nextval 数组
 有点约分的感觉

 

 

 

【3】5 KMP 手算 next 数组及 nextval 数组

 

 

 

【3】5 KMP 手算 next 数组及 nextval 数组