手算next值与nextval,全网最简单,时间关系,就不手打了(考完研后又手打了一遍,与图片一致)。

直接把笔记内容图片粘贴了,绝对最简单。有问题的话,下方评论。

方法1:引入了一个maxL,在计算nextval时,比较方便。强烈建议读者按照思路算一遍,再找几道题试试。

方法1

水印处是nextval[3]=nextval[1]=0

考完研了,手敲一遍吧(2018-12-26更新)

KMP手算next与nextval1
序号 1 2 3 4 5 6 7 8 9 10 11 12
模式串t a b a b a a a b a b a a
maxL 0 0 1 2 3 1 1 2 3 4 5 6
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

准备工作:写好模式串t,序号从1开始。

maxL:首个为0,计算包含当前字符的串的最大相同前后缀中字符的个数。例如,对于序号3,aba,有一个相同前后缀。特别地,对序号5,ababa有3个。将计算好的maxL填入,如上表。

next:首个为0,填入前一个maxL的值加1,例如,next[2]=maxL[1]+1=0+1=1。

nextval:首个为0,从左至右,比较maxL与next。

若不同,填入next的值,例如,对于序号2,maxL[2]=0,next[2]=1,则nextval[2]=1。

若相同,填入下标为该值的nextval,例如,maxL[3]=next[3]=1。则nextvaL[3]填入下标为1的nextval,即nextval[3]=nextval[1]=0;

方法2:直接计算next与nextval,计算量小一些,在理解方法1的基础上再看。建议两个方法记一个。

方法2

水印处是nextval[3]=nextval[1]=0

考完研了,手敲一遍吧(2018-12-26更新)

KMP手算next与nextval2

序号 1 2 3 4 5 6 7 8 9 10 11 12
模式串t 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

根据法一,可知next的前两个必为01(据此可以排除选项),仔细观察可知next与maxL的关系,去除maxL(考试不考),但是nextval就会算的麻烦一点。读者根据自身情况选择法一还是法二。

next:前两个填入01,计算不包括当前字符的串的前后缀相同个数。填入该值加1。例如,序号4前,aba,有一个相同前后缀。填入1+1=2。特别地,没有相同前后缀时填1,例如,序号3前,ab,填入0+1=1;

nextval:首个为0,从左至右,比较该序号字符,与next值对应的字符是否相同。

若不同,填入next值即可。例如,对于序号2,字符b,next[2]=1。b与序号1对应的字符a不同,则填入next,nextval[2]=next[2]=1。

若相同,填入next值对应序号的nextval,例如,序号3,next[3]=1,序号3字符a与1对应的字符a相同,则nextval[3]=nextval[1]=0。

如果题目中的next是从-1开始的,算完后,全部-1就好。

更多数据结构与算法实现:数据结构(严蔚敏版)与算法的实现(含全部代码)

有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

数据结构-KMP手算next与nextval(全网最简单,包会)相关推荐

  1. 数据结构--KMP算法总结

    数据结构-KMP KMP算法用于解决两个字符串匹配的问题,但更多的时候用到的是next数组的含义,用到next数组的时候,大多是题目跟前后缀有关的 . 首先介绍KMP算法:(假定next数组已经学会, ...

  2. 数据结构---KMP模式匹配病毒感染人的DNA检测

    数据结构-KMP模式匹配病毒感染人的DNA检测 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> #define N 1 ...

  3. 全网最简单的网络图画法,小白福音包学包会

    全网最简单的网络图画法,小白福音包学包会 徐锐(助理研究员),广东省生态环境技术研究所,土壤微生物与宏基因组方向 版本1.0.1,更新日期:2020年6月23日 本项目永久地址:https://git ...

  4. 全网最简单的RFM模型制作方法,3岁小孩都能学会!

    RFM是用户运营里非常重要的一个模型,在每个行业里都有着非常广泛的运用,特别在电商商业,RFM已经是属于行业分析人员必备的分析模型之一了.要想掌握并制作一个完整的RFM模型出来,方法有很多,可以利用P ...

  5. 全网最简单的百度网盘提速方法!!!!

    全网最简单的百度网盘提速方法!! PanDownload 百度网盘是一个比较常用的软件啦,不管是看剧还是下文件基本上都离不开百度网盘,但是每次想要下文件的时候因为太穷冲不起会员所以速度超级慢!!!在网 ...

  6. 苹果主题商店_苹果手机怎么换铃声?全网最简单的教程来了,小白秒学会

    原标题:苹果手机怎么换铃声?全网最简单的教程来了,小白秒学会 当身处公交.地铁等公共场所时,听到iPhone熟悉的来电铃声,不少iPhone用户都会下意识地拿出手机确认是否有来电,然而真实情况往往是别 ...

  7. 全网最简单的C# json数据解析 无敌菜鸟教程 十分钟搞定json数据解析

    全网最简单的C# json数据解析 无敌菜鸟教程 十分钟搞定json数据解析 废话先说一点,算了.直接进入正题吧. 用例子说话: JSON数据: string json: " {" ...

  8. 「影视解说」三联屏封面超详细制作方法,全网最简单三连视频封面

    2022年,全民的追剧方式可以说发生了翻天覆地的大改变.以前,了解一部片子只能通过别人介绍,或者是豆瓣影评中去汲取一些内容,而现在想了解一部电影但是又没有时间慢慢观看,大家只需要花2-5分钟,就可以全 ...

  9. 服务器中的热修复怎么做,Android 热修复(全网最简单的热修复讲解)

    首先!我们抛开网上的热修复框架不谈,我们来通过原理手动实现一个热修复工具,在撸码之前我们先通过一张图来了解热修复的流程. Android热修复 ACCCB328-AF5C-4BD9-AD08-6F7D ...

最新文章

  1. [EOJ]2019 ECNU XCPC March Selection #4
  2. 关于Netty的一些理解、实践与陷阱
  3. VS2015配置opencv教程(图文详解)
  4. wxWidgets:调试 WxWindow 应用程序
  5. 基于消息中间件RabbitMQ实现简单的RPC服务
  6. java变量命名规则_浅谈JAVA开发规范与开发细节(上)
  7. Spring Boot JDBC
  8. Impala介绍优缺点
  9. android之隐藏状态栏、图标、布局
  10. docker学习(1) 安装
  11. ACS 4.2安装图解
  12. Egret入门学习日记 --- 第十七篇(书中 7.4~8.2节 内容)
  13. python项目方案书模板格式_项目计划书格式范本word文档
  14. 在线PPT—Sway初级教程
  15. 计算机组成原理10——建立数据通路
  16. 服务器托管费用一般是多少
  17. 安卓图片三级缓存策略与实现
  18. Java教程-Java 程序员们值得一看的好书推荐
  19. expert个人版 sqlite_SQLite Expert Personal下载
  20. _SaveLog.dpr立即备份晓亮的电脑操作记录热键(快捷键) F11由于原来的 AutoIt 杀毒软件总是误报...

热门文章

  1. 网站流量日志数据分析系统(1)
  2. 大事件后台管理系统——个人中心
  3. 【云服务器】免费云服务器推荐
  4. 3Dmax怎么渲染AO图?云渲染AO图是什么?
  5. 使用@Aspect不起作用
  6. CTP 4097错误根源 / CTP程序运行没有反应/CTP版本说明
  7. QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之03EC20模组基础串口指令说明
  8. MySQL 第六章
  9. ftp(文件传输协议)服务
  10. 松下php研究所,松下幸之助实践经营哲学10-2