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

序号 1 2 3 4 5 6 7 8 9 10 11 12
a b a b a a a b a b a a
next 0 1 1 2 3 4 2 2 3 4 5 6
  1. 无脑第一位第二位是0和1。
  2. 计算第三位:看第二位b的next值,为1,把b和1对应的a进行比较,不同,则第三位a的next值为1,因为一直比到最前一位,都没有发生比较相同的现象。
  3. 计算第四位:看第三位a的next值,为1,把a和1对应的a进行比较,相同,则第四位b的next值为第三位a的next值加1,为2。
  4. 计算第五位:看第四位b的next值,为2,把b和2对应的b进行比较,相同,则第五位a的next值为第四位b的next值加1,为3。
  5. 计算第六位:看第五位a的next值,为3,把a和3对应的a进行比较,相同,则第六位a的next值为第五位a的next值加1,为4.
  6. 计算第七位:看第六位a的next值,为4,把a和4对应的b进行比较,不同,则再将4对应的b的next值2所对应的b与第六位a比较,不同,则再将2对应的b的next值1所对应的a与第六位a比较,相同,则第七位a的next值为第二位的next值加1,为2。
  7. 计算第八位:看第七位a的next值,为2,把a和2对应的b进行比较,不同,则再将2对应的b的next值1所对应的a进行比较,相同,则第八位的next值为第二位next值加1,为2。
  8. 计算第九位:看第八位b的next值,为2,把b和2对应的b进行比较,相同,则第九位的next值为第八位next值加1,为3.

求nextval得先求出next值
第一位为0,然后从左到右,计算哪一位,就把哪一位的next值所对应的值和本位相比较,若不同,nextval值就为本身的next值;若相同,nextval值就为next值所对应的nextval值。

序号 1 2 3 4 5 6 7 8 9 10 11 12
a b a b a a a b a b a a
next 0 1 1 2 3 4 2 2 3 4 5 6
nextval 0 1 0 1 0 4 2 1 0 1 0 4
  1. 第一个为0。
  2. 计算第二位:第二位b的next值为1,把1对应的a和b比较,不同,则第二位的nextval值为本身的next值,为1。
  3. 计算第三位:第三位a的next值为1,把1对应的a和a比较,相同,则第三位的nextval值为第一位的nextval值,为0。
  4. 计算第四位,第四位b的next值为2,把2对应的b和b比较,相同,则第四位的nextval值为第二位的nextval值,为1。
  5. 计算第五位:第五位a的next值为3,把3对应的a和a比较,相同,则第五位的nextval值为第三位的nextval值,为0。
  6. 计算第六位:第六位a的next值为4,把4对应的b和a比较,不同,则第六位的nextval值为本身的next值,为4。
  7. 计算第七位:第七位a的next值为2,把2对应的b和a比较,不同,则第七位的nextval值为本身的next值,为2。
  8. 计算第八位:第八位b的next值为2,把2对应的b和b比较,相同,则第八位的nextval值为第二位的nextval值,为1。
  9. 计算第九位:第九位a的next值为3,把3对应的a和a比较,相同,则第九位的nextval值为第三位的nextval值,为0。

next数组和nextval数组值相关推荐

  1. 【KMP】从原理上详解next数组和nextval数组

    本文将从原理上详细解释KMP算法中的next数组以及nextval数组,尽量让大家明白它们到底在记录什么,为什么要这样算.以及现在普遍的KMP算法实现当中的next数组与前两者有何不同.篇幅较长,但尽 ...

  2. KMP算法计算next数组和nextval数组(通俗易懂)

    KMP算法(举例说明) 例:给出一个字符串序列:ababaaababaa.利用KMP算法分别求出next数组和nextval数组 分析: 数组索引:0-n 逻辑索引:1-n next数组: 1.nex ...

  3. 字符串匹配KMP算法中Next[]数组和Nextval[]数组求法

    数据结构课本上给了这么一段算法求nextval9[]数组 1 int get_nextval(SString T,int &nextval[ ]) 2 { 3 //求模式串T的next函数修正 ...

  4. 4. 串的【朴素模式匹配算法】、【KPM算法:求next数组、nextval数组】

    串的模式匹配:在主串中,找到与模式串相同的子串,并返回其所在位置. 其实就是给出一个串abc,找到abc在主串的位置[abc都要匹配] 模式串:给出一个串abc 子串:主串中的abc[可能没有] 文章 ...

  5. KMP算法总结+Next数组+Nextval数组

    KMP算法是一种用于比较字符串匹配的算法,适用于在一个串中找另一个串是否存在,在这里如果不用字符串中的函数的话,一般能想到的第一种方法就是暴力,即从第一位开始比较. ①暴力方法 查找串:1 2 1 2 ...

  6. nextval数组求解

    nextval数组求解过程 为什么用nextval数组 nextval数组求解方式 一.模式串的下标从0开始,nextval数组求解方式详解: 代码实现 二.模式串的下标从1开始,nextval数组求 ...

  7. 数据结构:详解KMP算法,手工求解next、nextval数组,求模式串的比较次数例题

    KMP 算法 手工求解 next 数组,nextval数组 例题:求模式串的比较次数 2019 年 408 统考真题 设主串 T="abaabaabcabaabc",模式串 S=& ...

  8. 串的模式匹配、KMP算法、nextval数组求法

    一.暴力匹配 #include <iostream> using namespace std; #define MAXLEN 255 typedef struct{char ch[MAXL ...

  9. KMP算法,字符串匹配,next与nextval数组求解

    目录 KMP算法简介 next数组手动求解过程 next数组求解(代码实现) 改进的KMP算法 手动求解nextval数组 nextval数组求解(代码实现) KMP算法简介 KMP算法是一种改进的字 ...

最新文章

  1. python 过滤出某后缀名文件
  2. Hadoop集群搭建(四:Zookeeper环境安装)
  3. nstimer循环引用_NSTimer定时器进阶——详细介绍,循环引用分析与解决
  4. Session分布式共享 = Session + Redis + Nginx
  5. fiddler修改接口请求返回数据Response的三种方法
  6. Social network Social computing(社会网络和社会计算)
  7. Struts2源码阅读(六)_ActionProxyActionInvocation
  8. ECS入门之Hello World
  9. ASP.NET Core 和 Blazor 更新
  10. 对象流--对象的序列化
  11. 转:socks5协议详解
  12. 一文将 DCDC 的 Layout 讲的明明白白,收藏这篇就够了
  13. gp数据库主节点故障导致数据库无法重启报错
  14. IOS校园网破解更新了
  15. 微信公众号迁移:流程指引、迁移内容、注意事项、申请函公证指引
  16. windows 系统开启的端口调研
  17. 台风怎么看内存颗粒_高体质CJR颗粒!七彩虹CVN捍卫者内存评测
  18. Reinforcement Learning from Simultaneous Human and MDP Reward个人理解
  19. Win7 设置防火墙开放特定端口
  20. 点到直线(超平面)的距离公式

热门文章

  1. 志愿者带领事实孤儿首进电影院观看《流浪地球2》
  2. 计算机组合关闭程序,电脑一键关闭所有运行程序,来了解一下
  3. 外键(FOREIGN KEY)
  4. 关于cellpadding cellspacing 属性,无法在css中设置问题
  5. C#-Log4net 封装log类并自定义log存放路径
  6. 软件测试需要学什么?年薪30W+的测试工程师需要掌握哪些技能?
  7. 计算机更新bios,如何更新计算机的BIOS | MOS86
  8. element ui 菜单封装_vue+element UI实现多级导航菜单
  9. 【山楂是果胶之王,石榴是纤维冠军】
  10. 路由选路java,java基于蚁群算法路由选择可视化动态模拟-开题报告