0
点赞
收藏
分享

微信扫一扫

Typing practice 牛客网多校

​​https://www.nowcoder.com/acm/contest/147/F​​

普通kmp中 next[i]为满足 x[i-z...i-1]=x[0...z-1] 的最大 z 值(就是 x 的自身匹配)

优化kmp中 next'[i]=next[next[...[next[i]]]](直到next'[i]<0 或者 x[next'[i]]!=x[i])

这种优化kmp适合搞这种匹配位置前后浮动的问题 普通kmp中失配后不断找次长公共前缀后缀 但是如果当前公共前缀后缀的下一个字母和上一个更长的公共前缀后缀的下一个字母一样 是没有意义的 所以在预处理时 碰到这种情况直接跳过 可以在主串的匹配中节省一些时间

但是优化kmp中的next'[i]已经不具备从前的性质 不是所有题都适用

 


举报

相关推荐

0 条评论