nextval数组如何求解

nextval数组示例

j123456789
模式串Tababaaaba
next011234223
nextval010104210

求解方法

在求解nextval数组之前,应首先求出next数组,求解方法可以参考next数组如何求解

在得到next数组之后,nextval数组的求解就变得非常简单了:

  • nextval[1]=0
  • 本位字符与next数组所对应的字符相比较,如果相等则为nextval数组所对应的next的值,如果不相等则为next数组所对应的值

求解过程

以示例中的例子为例:

  1. 模式串T[2]=bT[next[2]]=T[1]=aT[2]!=T[next[2]],因此nextval[2]=next[2]=1
  2. 模式串T[3]=aT[next[3]]=T[1]=aT[3]==T[next[3]],因此nextval[3]=nextval[next[3]]=nextval[1]=0
  3. 模式串T[4]=bT[next[4]]=T[2]=bT[4]==T[next[4]],因此nextval[4]=nextval[next[4]]=nextval[2]=1
  4. 模式串T[5]=aT[next[5]]=T[3]=aT[5]==T[next[5]],因此nextval[5]=nextval[next[5]]=nextval[3]=0
  5. 模式串T[6]=aT[next[6]]=T[4]=bT[6]!=T[next[6]],因此nextval[6]=next[6]=4
  6. 模式串T[7]=aT[next[7]]=T[2]=bT[7]!=T[next[7]],因此nextval[7]=2
  7. 模式串T[8]=bT[next[8]]=T[2]=bT[8]==T[next[8]],因此nextval[8]=nextval[next[8]]=nextval[2]=1
  8. 模式串T[9]=aT[next[9]]=T[3]=aT[9]==T[next[9]],因此nextval[9]=nextval[next[9]]=0

因此,模式串ababaaaba对应的nextval数组为010104210

  • 32
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值