别只用公式化描述,看不懂。最好用一个简短又具有代表性的字符串,一步一步说明next[]数组的构造过程,如next[i]的值是怎么来的。
http://www.cnblogs.com/vsky/p/5068619.html
假设待匹配的是P,在P[i] 匹配失败的时候就要跑到next[i]。其实在匹配P[i]时,我们已经知道了P[0]~P[i-1]是已经匹配好的了,那么就要找出最长的P[j]~P[i-1] (已经匹配字符串的尾缀),是模式P的前缀。
值得注意的是,计算next的时候是用不到待匹配字符串的。因为,都是假设,如果P[i]匹配失败的时候,应该从哪里继续匹配。重点在于不论待匹配的字符串是什么,只要当匹配P[i]失败的时候,已经匹配好了P[0]~P[i-1],而这个信息可以加以利用。
需要具体例子,你的回答不符合要求。