使用KMP算法在文本串S中找模式串P是一种常见的方法。假设S=P={xyxyyxxyx},亦即将S对自己进行匹配,匹配过程中正确的next数组是____。
模式串的各个子串 | 前缀 | 后缀 | 最大公共元素长度 |
x | 空 | 空 | 0 |
xy | x | y | 0 |
xyx | x , xy | x , yx | 1 ( x ) |
xyxy | x , xy , xyx | y , xy , yxy | 2 ( xy ) |
xyxyy | x , xy , xyx , xyxy | y , yy , xyy , yxyy | 0 |
xyxyyx | x , xy , xyx , xyxy , xyxyy | x , yx , yyx , xyyx , yxyyx | 1 ( x ) |
xyxyyxx | x , xy , xyx , xyxy , xyxyy ,xyxyyx | x , xx , yxx , yyxx , xyyxx ,yxyyxx | 1 ( x ) |
xyxyyxxy | x , xy , xyx , xyxy , xyxyy ,xyxyyx , xyxyyyxx | y , xy , xxy , yxxy , yyxxy ,xyyxxy , yxyyxxy | 2 ( xy ) |
xyxyyxxyx | x , xy , xyx , xyxy , xyxyy ,xyxyyx , xyxyyyxx , xyxyyyxxy | x , yx , xyx , xxyx , yxxyx ,yyxxyx , xyyxxyx , yxyyxxyx | 3 ( xyx ) |
2、通过“最长相同前缀后缀长度值右移一位,然后初值赋为 -1 ”得到的 next 数组:
模式串 | X | Y | X | Y | Y | X | X | Y | X |
前缀最大公共元素 | 0 | 0 | 1 | 2 | 0 | 1 | 1 | 2 | 3 |
Next | -1 | 0 | 0 | 1 | 2 | 0 | 1 | 1 | 2 |