模式中第j个字符失配时:
next[j]=0 (如果j=1);
next[j]=1 (如果j=2);
next[j]={前(j-1)个字符中:前缀和后缀最大的完全相同长度+1} (如果j>=3);
next[j] 的含义是: 在一次匹配过程中,模式串中第j个字符失配时,应将主串中当前失配字符与模式中第next[j] 个字符继续匹配。
以下给出解释:
一个长度为n的字符串:
前缀:不包括最后一个字符的头部字符串(长度为1—n-1);
后缀:不包括第一个字符的尾部字符串(长度为1—n-1);
例:先给定模式串: abaabcac ,求next[5] 。
求next[5],即:前4个字符中,最大的前缀后缀完全相同长度+1。
在这里,前4个字符中:最大的前缀后缀完全相同部分为:a。它的长度再加一等于2。则next[5]=2。