next数组

首先我们确定next数组第一二位分别为0,1。后面求解每一位的next值时,根据前一位进行比较,从第三位开始,将前一位与其next值对应的内容进行比较,若相等,则该位的next值就是前一位的next值加上1;若不等,向前继续寻找next值对应的内容来与前一位进行比较。直到找到某个位上内容的next值对应的内容与前一位相等为止,则这个位对应的值加上1即为需求的next值;若找到第一位都没有找到与前一位相等的内容,那么求解的位上的next值为1。


举个例子,如求串“ababaaababaa”的next数组

1,第1步:

                     下标为1,2的next数组分别为0,1。

ababaaababaa
下标123456789101112
next数组01

2,第2步:

                     求下标为3,其中前一位为b,其相对应的next数组为1,其所对应的下标为1的为a,

                     不相等,再往前找没了,故而next数组为1

ababaaababaa
下标123456789101112
next数组011

3,第3步:

                    求下标为4,其中前一位为a,其相对应的next数组为1,其所对应的下标为1的为a,

                     相等,故而其相对与前一位加1。1+1=2;

ababaaababaa
下标123456789101112
next数组0112

4,第4步:

                   求下标为5,其中前一位为b,其相对应的next数组为2,其所对应的下标为2的为b,

                     相等,故而其相对与前一位加1。2+1=3;

ababaaababaa
下标123456789101112
next数组01123

5,第5步:

                    求下标为6,其中前一位为a,其相对应的next数组为3,其所对应的下标为3的为a,

                    相等,故而其相对与前一位加1。3+1=4;

ababaaababaa
下标123456789101112
next数组011234

6,第6步:

                    求下标为7,其中前一位为a,其相对应的next数组为4,其所对应的下标为4的为b,

                    ,不相等,从而继续向前找,b的next数组为2,下标为2的为b,从而第7位的next数组                       为下标为2的next数组加1,为1+1=2;

ababaaababaa
下标123456789101112
next数组0112342

7,第7步

                     求下标为8:其中前一位为a,其相对应的next数组为2,其所对应的下标为2的为b,

                    ,不相等,从而继续向前找,b的next数组为1,下标为1的为a,相等,从而第7位的                          next数组为下标为2的next数组加1,为1+1=2;

ababaaababaa
下标123456789101112
next数组01123422

8,第8步

                    求下标为9:其中前一位为b,其相对应的next数组为2,其所对应的下标为2的为b,

                     相等,故而其相对与前一位加1。2+1=3;

ababaaababaa
下标123456789101112
next数组011234223

9,第9步:

                     求下标为10,其中前一位为a,其相对应的next数组为3,其所对应的下标为3的为a,

                     相等,故而其相对与前一位加1。3+1=4;

ababaaababaa
下标123456789101112
next数组0112342234

10,第10步:

                    求下标为11,其中前一位为b,其相对应的next数组为4,其所对应的下标为4的为b,

                     相等,故而其相对与前一位加1。4+1=5;

ababaaababaa
下标123456789101112
next数组01123422345

11,第11步:

                     求下标为12,其中前一位为a,其相对应的next数组为5,其所对应的下标为5的为a,

                     相等,故而其相对与前一位加1。5+1=6;

ababaaababaa
下标123456789101112
next数组011234223456


 

从而,求出例子串"ababaaababaa"的next的数组为"011234223456";

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值