T="t1t2...tm"中的每一个ti都对应一个k得值,这个k值仅依赖于模式本身字符序列的构成,而与主串无关。用next[j]表示tj对应的k的值(1<<j<<m),则t1...tk-1即是t1...tj-1的真前缀,又是真后缀的最长子串,因此,将k=next[j]称为tj的前缀函数值。
1 回答
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
比如字符串S=aabaa
aabaa是S的前缀,但只有a,aa,aab,aaba是它的真前缀
真x缀就是不包含字符串自身的x缀
前缀函数计算的是在模式匹配字符串里第n个字符匹配失败后,下一次可能匹配的最长移动距离,next[n]就是第n个字符所拥有的最长真后缀同时是该字符串前缀的串的长度,比如
aabaa
a -> 0 第一个字符始终为0
aa -> 1
aab -> 0
aaba -> 1
aabaa -> 2
- 1 回答
- 0 关注
- 159 浏览
添加回答
举报
0/150
提交
取消