next数组下标从1开始计算
next[1] 肯定是 0
next[2] 肯定是 1
next[n]
的情况,将前面n-1个字符,计算从首尾开始组成最大的相同子串的长度,如果找到,那么next值是该长度加1,否则next值是1。
举例
next[6]的计算,字符串第六位是
a
,(
ababa
a
ababaa)
将前面的5个字符,从头尾开始取4个组成子串比较,如果不相等,则从首尾取3个字符组成子串继续比较,并以此类推,
如果一直比较到最后一个字符都不相等,那么该next值为1。
4个字符的情况:abab : baba
3个字符的情况:aba : aba 此时相等,那么next[6] = 3+1 = 4