nextval数组示例

j 1 2 3 4 5 6 7 8 9
模式串T a b a b a a a b a
next 0 1 1 2 3 4 2 2 3
nextval 0 1 0 1 0 4 2 1 0

求解方法

在求解nextval数组之前,应首先求出next数组,求解方法可以参考next数组如何求解

在得到next数组之后,nextval数组的求解就变得非常简单了:

  • nextval[1]=0
  • 本位字符与next数组所对应的字符相比较,如果相等则为nextval数组所对应的next的值,如果不相等则为next数组所对应的值

求解过程

以示例中的例子为例:

  1. 模式串T[2]=bT[next[2]]=T[1]=aT[2]!=T[next[2]],因此nextval[2]=next[2]=1
  2. 模式串T[3]=aT[next[3]]=T[1]=aT[3]==T[next[3]],因此nextval[3]=nextval[next[3]]=nextval[1]=0
  3. 模式串T[4]=bT[next[4]]=T[2]=bT[4]==T[next[4]],因此nextval[4]=nextval[next[4]]=nextval[2]=1
  4. 模式串T[5]=aT[next[5]]=T[3]=aT[5]==T[next[5]],因此nextval[5]=nextval[next[5]]=nextval[3]=0
  5. 模式串T[6]=aT[next[6]]=T[4]=bT[6]!=T[next[6]],因此nextval[6]=next[6]=4
  6. 模式串T[7]=aT[next[7]]=T[2]=bT[7]!=T[next[7]],因此nextval[7]=2
  7. 模式串T[8]=bT[next[8]]=T[2]=bT[8]==T[next[8]],因此nextval[8]=nextval[next[8]]=nextval[2]=1
  8. 模式串T[9]=aT[next[9]]=T[3]=aT[9]==T[next[9]],因此nextval[9]=nextval[next[9]]=0

因此,模式串ababaaaba对应的nextval数组为010104210

nextval数组如何求解相关推荐

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

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

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

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

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

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

  4. nextval数组求解

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

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

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

  6. next数组和nextval数组值

    next数组的求解方法是:第一位的next值为0,第二位的next值为1,后面求解每一位的next值时,根据前一位进行比较.首先将前一位与其next值对应的内容进行比较,如果相等,则该位的next值就 ...

  7. 《团队项目开发之三对一维环形数组的求解》

    <团队项目开发之三对一维环形数组的求解> 设计思想:通过把数组的长度扩大为原来的一倍,相当于新数组是由对原来的数组重复了一遍后而组成的,这样保证了数组以环状的形式,按照数组中每个数字的位序 ...

  8. KMP,深入讲解next数组的求解(转载)

    前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k:但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导 ...

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

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

最新文章

  1. 【翻译】24款界面精美的免费UI工具包
  2. .NET微服务架构及API网关
  3. 使用代码自动打开ABAP Editor
  4. django orm插入一条_如何通过django的ORM远程发布文章?
  5. TransactionScope 事务使用说明
  6. php 去除变态空格字符方法,空格trim不掉问题解决思路
  7. Atitit 项目沟通管理 Atitit 沟通之道 attilax著.docx
  8. c语言汇率转换代码_C语言人民币转换代码..doc
  9. 职称计算机题库 云盘,职称计算机考试题库「附答案」
  10. Qt QTableView样式设置
  11. ffmpeg 源代码简单分析 :av_read_frame()
  12. 6.3 探索性空间数据分析
  13. 专稿 | 巨头再聚、新品齐发,进博三年,合作共赢
  14. 数据分析(商业数据分析师理论认知之二商业分析师入门指南)
  15. 《第五项修炼》读书笔记
  16. 什么是轻量应用服务器
  17. 时过一年,我还在原地踏步么
  18. oracle汉字排序
  19. 智能ALMP封装推拉力测试机 剪切力强度测试仪器主要功能介绍
  20. [渝粤教育] 华中科技大学 模拟电子技术基础 参考 资料

热门文章

  1. 绘声叙风电课堂 锐意做追风少年
  2. 【uni-app】常用图标、头像汇总
  3. ArcGIS Geostatistical analyst (地统计分析)检查数据情况
  4. 谁说路由远程控制是智能路由的专属?TP-LINK也玩远程控制!
  5. 阿里云语音服务配合alertmanager实现电话告警
  6. C# log4net 日志输出超详细
  7. 利用脚本轻松实现视频处理
  8. 搭乘飞机办理乘机手续事项
  9. 模拟银行存取款业务 java
  10. android桌面快捷方式lua,通过ADB启动触动精灵lua脚本