数据结构(4.4)——求next数组

news2024/11/14 3:36:05

next数组的作用:当模式串的第j个字符失配时,从模式串的第next[j]的继续往后匹配

求模式串的next数组(手算)

next[1]

任何模式串都一样,第一个字符不匹配时,只能匹配下一个子串,因此,往后,next[1]都无脑写0

next[2] 

 任何模式串都一样,第二个字符不匹配时,只能匹配模式串的第1个字符,因此,往后,next[1]都无脑写1

next[3]  

在不匹配的位置前边,划一条分界线,模式串一步一步往后退,直到分界线之前"能对上",或模式串能完全跨过分界线为止,此时j指向哪儿,next数组值就是多少

 

next[4]  

在不匹配的位置前边,划一条分界线,模式串一步一步往后退,直到分界线之前"能对上",或模式串能完全跨过分界线为止,此时j指向哪儿,next数组值就是多少

next[5]

在不匹配的位置前边,划一条分界线,模式串一步一步往后退,直到分界线之前"能对上",或模式串能完全跨过分界线为止,此时j指向哪儿,next数组值就是多少

next[6]

在不匹配的位置前边,划一条分界线,模式串一步一步往后退,直到分界线之前"能对上",或模式串能完全跨过分界线为止,此时j指向哪儿,next数组值就是多少

 

总结

next[1]都无脑写0 

next[2]都无脑写1

其他next:在不匹配的位置前边,划一条分界线,模式串一步一步往后退,直到分界线之前"能对上",或模式串能完全跨过分界线为止,此时j指向哪儿,next数组值就是多少

例题:

求模式串:ababaa的next数组

//求next[1]

??????->??????//i=1->i=2

ababaa-> ababaa //j=0,第一个字符匹配失败,只能匹配下一个子串,++i,++j

next[1]=0;

//求next[2]

a?????->a??????  //i=2

ababaa->  ababaa  //j=1//第一个字符匹配成功,第二个字符匹配失败,i不动,j后退一步

next[2]=1;

//求next[3]

ab????->ab????//i=3

ababaa->    ababaa//第三个字符匹配失败,模式串后退两步,j指向1,j=1

next[3]=1

//求next[4]

aba???->aba???//i=4

ababaa->    ababaa//第四个字符匹配失败,模式串后退,第一个字符a和主串第三个字符a匹配,j指向2,j=2

next[4]=2

//求next[5]

abab??->abab??//i=5

ababaa->    ababaa//第五个字符匹配失败,模式串后退,字符串ab和主串第二个子串ab匹配,j指向3,j=3

next[5]=3

 

//求next[6]

ababa?->ababa?//i=6

ababaa->    ababaa//第六个字符匹配失败,模式串后退,字符串ab和主串第二个子串aba匹配,j指向4,j=4

next[6]=4

 例题2同理:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1927463.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库学习作业

使用mysgldump命令备份数据库中的所有表 备份booksDB数据库中的books表 使用mysgldump备份booksDB和test数据库(test数据库自行准备) 使用mysq1命令还原第二题导出的book表 进入数据库使用source命令还原第二题导出的book表 创库,建表 建表的结果 插入数据 使用mysg…

医院同步时钟,构建医院零误差时间环境

在医院这个分秒必争、责任重大的场所,时间的准确性和一致性至关重要。医院同步时钟的应用,为构建医院零误差时间环境提供了坚实的保障。 一、医院同步时钟应用原因 首先,医疗工作的精确性和协同性依赖于统一且准确的时间。从手术的安排到药物…

MySQL篇:事务

1.四大特性 首先,事务的四大特性:ACID(原子性,一致性,隔离性,持久性) 在InnoDB引擎中,是怎么来保证这四个特性的呢? 持久性是通过 redo log (重做日志&…

解析CQRS架构模式

在日常开发过程中,关于如何正确划分操作的边界和职责一直是我们需要考虑的一个核心问题。针对这个问题,业界也诞生了一些新的设计思想和开发模式,其中最具代表性的就是今天要介绍的CQRS。 CQRS的全称是Command Query Responsibility Segregat…

图——图的遍历(DFS与BFS)

前面的文章中我们学习了图的基本概念和存储结构,大家可以通过下面的链接学习: 图的定义和基本术语 图的类型定义和存储结构 这篇文章就来学习一下图的重要章节——图的遍历。 目录 一,图的遍历定义: 二,深度优先…

【java计算机毕设】网上购书管理系统MySQL servlet JSP项目设计源代码 期末寒暑假作业 小组作业

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】网上购书管理系统MySQL servlet JSP项目设计源代码 期末寒暑假作业 小组作业 2项目介绍 系统功能: servlet网上购书管理系统包括管理员、用户两种角色。 管理员功能包括订单管理(已…

前端Vue组件化实践:自定义加载组件的探索与应用

在前端开发领域,随着业务逻辑复杂度的提升和系统规模的不断扩大,传统的开发方式逐渐暴露出效率低下、维护困难等问题。为了解决这些挑战,组件化开发作为一种高效、灵活的开发模式,受到了越来越多开发者的青睐。本文将结合实践&…

MySQL下载安装使用教程图文教程(超详细)

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们使…

Windows安装和使用Doccano标注工具

简介 开源链接:GitHub - doccano/doccano: Open source annotation tool for machine learning practitioners. Open source annotation tool for machine learning practitioners. Doccano是一款开源的文本标注工具,由人工智能公司Hironsan开发并在G…

uni app 本地打包apk 教程

前言: 各位同学大家好,最近帮别人打包了一个 uni 的项目编译成apk 所以觉得必要分享下。 上效果图 原始工程 这种uni 原始的工程我们直接 这样我们就可以运行到我们的模拟器或者真机上面去 手动打包 开发环境 Android Studio 下载地址:An

1讲8小时!张宇新36讲怎么学效果最大化?

别怕!解决以下问题,就能让学习效果最大化。 1. 理解有难度。 如果你习惯传统教学模式,例如武忠祥老师的强化课,可能会觉得张宇36讲信息量太大,难以在短时间内消化和理解。 这是因为,考研数学教学的一端&a…

一个审计人为什么要辞职去日本做码农??

今天翻阅报道的时候,看到一篇记者采访记录: 文章的题目是:“审计人辞职去日本做码农的心路历程”。由于标题吸引住了我,我就点进去了看看。 被采访的对象:她在国内审计行业工作两年多后,自学编程&#xf…

Cesium--获取当前相机中心与地面的射线焦点

本文记录获取当前相机中心与地面的射线焦点的方法,可用于视角缩放过程中,控制视角自动平滑切换到二维等场景: 方法一定是视角中心能与地面有交集,如果对着地平线或对着天空肯定是没效果的。直接放代码: //调整相机到正…

计算机志愿攻略,高考生的必读

高考结束 又一年高考结束了 1342万学子们寒窗苦读十二载 迈入考场的那一刻 既紧张又兴奋 即使过去很多年 我仍然能回忆起当年的情景 当高考结束的铃声响起 所有的紧张和压力仿佛瞬间释放 走出来的那一刻 不管结果如何 我们都为自己能够勇敢地走过这段旅程而感到骄傲 …

基于Three.js实现三维空间中的箭头移动动画

继上一篇文章中实现了三维管道的可视化和流动模拟,最近需要基于曲面做三维物体的移动动画效果,特别是箭头等指向性物体的移动,因此就编写了以下方案,主要实现了三维空间内箭头等物体的创建和指向调整及动画效果等,具体如下: 1.基于Thee.js实现箭头等物体创建-THREE.Arrow…

解读网传《深圳IT圈⭕新解读八小时工作制》

网传深圳IT圈的新解读八小时工作制 工作时间安排: 10:00-12:0014:00-18:0019:00-21:00 初看:有惊喜 上午开始时间晚:相对于传统的9点开始,这种安排允许员工有更多的早晨时间,可以用来休息或处理个人事务。下午和晚上分…

S7-200smart与C#通信

https://www.cnblogs.com/heizao/p/15797382.html C#与PLC通信开发之西门子s7-200 smart_c# s7-200smart通讯库-CSDN博客https://blog.csdn.net/weixin_44455060/article/details/109713121 C#上位机读写西门子S7-200SMART PLC变量 教程_哔哩哔哩_bilibilihttps://www.bilibili…

电脑关机被阻止

1. winR输入regedit进入注册表 2. 选择HKEY_USERS-》.DEFAULT-》Control Panel-》Desktop 3. 右键DeskTop新建字符串值,命名为AutoEndTasks,数值设置为1

香橙派AIpro部署YOLOv5:探索强悍开发板的高效目标检测能力

香橙派AIpro部署YOLOv5:探索强悍开发板的高效目标检测能力 一、香橙派AIpro开箱使用体验 1.1香橙派AIpro开箱 拿到板子后第一件事情就是开箱: 开箱后可以看见一个橘子的标识,也就是香橙派了,并且还有四个大字:为AI…

Ubuntu系统安装mysql之后进行远程连接

1.首先要配置数据库允许进行远程连接 1.1 打开MySQL配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf1.2 修改 bind-address 行 #按i进入插入模式 bind-address 0.0.0.0 #按 Esc 键退出插入模式。 #输入:wq 然后按 Enter 保存并退…