计算时只用到子串,也就是模式串(这里用到一个maxL值)
这里模式串为:abaabcac
第一步将模式串写上序号,我们这里从1开始(有的从0开始,建议充1开始)
然后计算出maxL值,列出从第一个开始的子串,找出相等的前缀和后缀的个数
如果2>看不懂的话,看3>,
2>计算maxL值
所以maxL值
如果这个看不懂的话, 看下面的3>
3>, 如果2>看懂了这个就不用看了
依次类推
4>计算next值
接下来将maxL复制一行,去掉最后一个数,在开头添加一个-1,向右平移一个格,然后每个值在加1的到next值
5>计算nextVal值,首先将第一个为0,然后看next和maxL是否相等(先计算不相等的)
当next和maxL不相等时,将next的值填入
当next和maxL相等时,填入对应序号为next值得nextVal值
所以整个nextVal值为: