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. 嘿,程序员,你该学点经济学了!
  2. 解释一下为什么我很少jQuery
  3. JAVA 条件语句 跟PHP没有区别!!!!!
  4. 重根迭代法解方程(两种方法)(Python实现)
  5. wstring与string相互转换
  6. java 1.7的新特性_[Java]  JDK 1.7版本的 新特性
  7. 《C++ Primer 第五版》(第6.3~6.7节)——返回指向数组/函数的指针,函数重载,默认形参、inline函数和constexpr函数
  8. 看面试题感觉生疏的知识点
  9. Python全栈开发记录_第三篇(linux(ubuntu)的操作)
  10. git(16)---解决冲突
  11. 大数据系列(hadoop) 集群环境搭建二
  12. 自定义View实践:指南针的实现
  13. GPT-3写了一篇论文
  14. DRILLNET 2.0------第十四章 钻具扭矩/摩阻模型
  15. MYSQL基础之浅聊 变量
  16. tensorflow入门教程(三十五)facenet源码分析之MTCNN--人脸检测及关键点检测
  17. Google 公司各职位年薪排排坐
  18. php microtime()函数
  19. linux系统wav驱动下载,linux下alsa架构音频驱动播放wav格式文件
  20. 市场观察:130个智慧消防中标项目分析

热门文章

  1. Postgresql数据库介绍
  2. 如何快速入门网络基础知识(TCP/IP 和 HTTP)
  3. 「看不见的」快消品一物一码渠道营销
  4. 2022爱分析· 中国分析型数据库市场研究报告
  5. Mac Time Machine恢复系统 Time Machine还原系统教程
  6. Codevs 1391 伊吹萃香/虫洞
  7. 教师编制计算机技术信息考什么,初中信息技术老师考编,岗位要求是信息技术,我的..._教师资格考试_帮考网...
  8. GiHub 干货(主要还是看原文链接)
  9. Log4Net 详解
  10. POJ2528【线段树经典染色。】