已知串S=‘aaab’,其Next数组值为( )

文章讲述了如何计算给定字符串的Next数组,通过状态转移规则处理字符匹配,如aaab的Next数组计算过程,并演示了如何处理不同字符的情况。最后提供了一个练习题:xyxyyxxyx的Next数组求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

4.已知串S=‘aaab’,其Next数组值为( )。【西安电子科技大学 1996 一、7 (2分)】

a5723657fe4043f98756b9e803643ce2.png

序号:1 2 3 4

数组:a a a b

next: 0 1 2 3

注意上边序号、数组和next的对应关系

求next值的过程:

前两位:next数组值前两位一定为01,即aaab中的前两位aa对应01,如上表中next第1,2位为0和1.其实这就可以选出答案了.

第三位:3a前面是2a(2a表示序号为2的a),2a的next数组值为1,找到序号为1的字符, 即1a,将2a和1a相比,两者相同,都是a,则3a的next值为2a的next值加1,即2;

第四位:4b前3a的next为2,找到序号为2的字符, 即2a, 将3a与2a相比,二者相同,则其next值为3a的next加1,为3.

结果为0123,选A

如果比较的时候碰到与前一位字符“不同”怎么办?如求下列序号4的next值

序号: 1 2 3 4

数组: a a b a

next: 0 1 2 1

以前一位的next值为序号,找到这个序号对应的字符,再进行比较,4a前一位是3b, next值为2, 找到序号2对应的2a, 比较3b和2a, 两者不同, 再重复这一步骤, 找到2a的next值是1,比较3b和1a, 不同, 那么所求的4a的next就是1, 如果相同就是2a的next值加1,为2。

做个练习:xyxyyxxyx,求它的next数组?

答案是011231223,你做对了吗?

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值