nextval数组如何求解
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
数组所对应的值
求解过程
以示例中的例子为例:
- 模式串
T[2]=b
,T[next[2]]=T[1]=a
,T[2]!=T[next[2]]
,因此nextval[2]=next[2]=1
- 模式串
T[3]=a
,T[next[3]]=T[1]=a
,T[3]==T[next[3]]
,因此nextval[3]=nextval[next[3]]=nextval[1]=0
- 模式串
T[4]=b
,T[next[4]]=T[2]=b
,T[4]==T[next[4]]
,因此nextval[4]=nextval[next[4]]=nextval[2]=1
- 模式串
T[5]=a
,T[next[5]]=T[3]=a
,T[5]==T[next[5]]
,因此nextval[5]=nextval[next[5]]=nextval[3]=0
- 模式串
T[6]=a
,T[next[6]]=T[4]=b
,T[6]!=T[next[6]]
,因此nextval[6]=next[6]=4
- 模式串
T[7]=a
,T[next[7]]=T[2]=b
,T[7]!=T[next[7]]
,因此nextval[7]=2
- 模式串
T[8]=b
,T[next[8]]=T[2]=b
,T[8]==T[next[8]]
,因此nextval[8]=nextval[next[8]]=nextval[2]=1
- 模式串
T[9]=a
,T[next[9]]=T[3]=a
,T[9]==T[next[9]]
,因此nextval[9]=nextval[next[9]]=0
因此,模式串ababaaaba
对应的nextval
数组为010104210
nextval数组如何求解相关推荐
- 【KMP】从原理上详解next数组和nextval数组
本文将从原理上详细解释KMP算法中的next数组以及nextval数组,尽量让大家明白它们到底在记录什么,为什么要这样算.以及现在普遍的KMP算法实现当中的next数组与前两者有何不同.篇幅较长,但尽 ...
- 数据结构:详解KMP算法,手工求解next、nextval数组,求模式串的比较次数例题
KMP 算法 手工求解 next 数组,nextval数组 例题:求模式串的比较次数 2019 年 408 统考真题 设主串 T="abaabaabcabaabc",模式串 S=& ...
- KMP算法,字符串匹配,next与nextval数组求解
目录 KMP算法简介 next数组手动求解过程 next数组求解(代码实现) 改进的KMP算法 手动求解nextval数组 nextval数组求解(代码实现) KMP算法简介 KMP算法是一种改进的字 ...
- nextval数组求解
nextval数组求解过程 为什么用nextval数组 nextval数组求解方式 一.模式串的下标从0开始,nextval数组求解方式详解: 代码实现 二.模式串的下标从1开始,nextval数组求 ...
- 字符串匹配KMP算法中Next[]数组和Nextval[]数组求法
数据结构课本上给了这么一段算法求nextval9[]数组 1 int get_nextval(SString T,int &nextval[ ]) 2 { 3 //求模式串T的next函数修正 ...
- next数组和nextval数组值
next数组的求解方法是:第一位的next值为0,第二位的next值为1,后面求解每一位的next值时,根据前一位进行比较.首先将前一位与其next值对应的内容进行比较,如果相等,则该位的next值就 ...
- 《团队项目开发之三对一维环形数组的求解》
<团队项目开发之三对一维环形数组的求解> 设计思想:通过把数组的长度扩大为原来的一倍,相当于新数组是由对原来的数组重复了一遍后而组成的,这样保证了数组以环状的形式,按照数组中每个数字的位序 ...
- KMP,深入讲解next数组的求解(转载)
前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k:但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导 ...
- 串的模式匹配、KMP算法、nextval数组求法
一.暴力匹配 #include <iostream> using namespace std; #define MAXLEN 255 typedef struct{char ch[MAXL ...
最新文章
- 【翻译】24款界面精美的免费UI工具包
- .NET微服务架构及API网关
- 使用代码自动打开ABAP Editor
- django orm插入一条_如何通过django的ORM远程发布文章?
- TransactionScope 事务使用说明
- php 去除变态空格字符方法,空格trim不掉问题解决思路
- Atitit 项目沟通管理 Atitit 沟通之道 attilax著.docx
- c语言汇率转换代码_C语言人民币转换代码..doc
- 职称计算机题库 云盘,职称计算机考试题库「附答案」
- Qt QTableView样式设置
- ffmpeg 源代码简单分析 :av_read_frame()
- 6.3 探索性空间数据分析
- 专稿 | 巨头再聚、新品齐发,进博三年,合作共赢
- 数据分析(商业数据分析师理论认知之二商业分析师入门指南)
- 《第五项修炼》读书笔记
- 什么是轻量应用服务器
- 时过一年,我还在原地踏步么
- oracle汉字排序
- 智能ALMP封装推拉力测试机 剪切力强度测试仪器主要功能介绍
- [渝粤教育] 华中科技大学 模拟电子技术基础 参考 资料