回 帖 发 新 帖 刷新版面

主题:关于模式匹配(KMP)算法

现有主串000000001,模式串0001.那么模式串的next[4]应该是几?我觉得应该是4,但是如果这样的话模式串将无法向右移动,而永远停留在主串的第4个字符与模式串的第4个字符间比较,请问正确的说法是什么?

回复列表 (共6个回复)

沙发

这个算法具体可以看<严蔚敏数据结构>的第84页

板凳

怎么也不可能是4啊。应该是-1

3 楼

应该是3

4 楼

请问楼上是怎么算出来的?

5 楼


      j=  1 2 3 4
模式串    0 0 0 1
next[j]=  0 1 2 3

6 楼

[quote]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=&nbsp;&nbsp;1&nbsp;2&nbsp;3&nbsp;4
模式串&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;0&nbsp;0&nbsp;1
next[j]=&nbsp;&nbsp;0&nbsp;1&nbsp;2&nbsp;3[/quote]

这个结果虽然也还可以,但不如
          -1 -1 -1 3

抱歉,我前面的也说错了,应该是3。

我来回复

您尚未登录,请登录后再回复。点此登录或注册