【数据结构】KMP算法:计算next与nextval函数值(图解)

:计算模式串"abaabcac"的KMP算法中next函数值

由函数定义
n e x t [ j ] = { 0 ,   j = 1 M a x { k ∣ 1 < k < j 且 " t 1 t 2 ⋅ ⋅ ⋅ t k − 1 " = " t j − k + 1 t j − k + 2 ⋅ ⋅ ⋅ t j − 1 " } 1 ,   k = 1 next[j]=\left\{ \begin{aligned} 0 , & \ j=1 \\ Max & \{k|1<k<j且"t_1t_2···t_{k-1}"="t_{j-k+1}t_{j-k+2}···t_{j-1}" \} \\ 1 , & \ k=1 \end{aligned} \right. next[j]= 0,Max1, j=1{k∣1<k<j"t1t2⋅⋅⋅tk1"="tjk+1tjk+2⋅⋅⋅tj1"} k=1
可得 next[1] = 0,其修正值 nextval[1] = 0

对模式串进行自我匹配的过程如图所示:(主串指针i,子串指针j
在这里插入图片描述
故计算得到的函数值为:

模式串abaabcac
j12345678
next[j]01122312
nextval[j]01020302
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值