KMP算法手工求next数组和nextval数组

xiaoxiao2022-06-11  65

求next数组和nextval数组

复习到kmp算法,查了些资料,在此记录一个相对简单的求next和nextval的方法

1.求next数组

当i<2时: next[1]=0 next[2]=1 当i>2时: 在字符串s中,s[1]~s[i-1]是长度为i-1的字符子串,这一字符子串的前缀、后缀最长公共元素的数量记为k; 则: next[i]=1+k


例:

i12345678910字符串abcaabbcabk--00112001next0111223112

2.求nextval数组

记p = next[i] ; 将 s[i] 与 s[p] 进行比较: 1)二者相同,则,nextval[i] = next[p] 2)二者不同,则,nextval[i] = p


例:

i12345678910字符串abcaabbcabnext0111223112nextval0110213101
转载请注明原文地址: https://www.6miu.com/read-4931608.html

最新回复(0)