刚刚开始遇到这个问题说实话完全懵逼,然后简单搜了下,还是理解的模棱两可。最后看了几篇博客,现在才算是真正的理解了。

首先在将例子之前先说说这个next数组求解的思路:

第一位的next的值是0,第二位的next的值为1,后面求解每一位的next的值时。首先将前一位与其next值对应的内容进行比较,如果相等,则该位的next值就是前一位的next值加上1;如果不等,如果不等,向前继续寻找next值对应的内容与前一位进行比较(向前继续寻找next值对应的内容与next值对应的内容的next前一位进行比较),直到找到某个位上的内容的next值对应的内容与前一位相等为止,则这个位对应的值加上1即为需求的next值;如果找到第一位都没有找到与前一位相等的内容,那么需求的位上的next值即为1。所以中心思想则是递进查看前一位的next对应的是否和前一位相同。找到相同的则在找到的基础上加1。

求串′ababaaababaa′的next数组

模式串 a b a b a a a b a b a a
下标 1 2 3 4 5 6 7 8 9 10 11 12

1、前两位:next数组前两位规定是0,1 即前两位ab对应的next数组为01,则:

模式串 a b a b a a a b a b a a
下标 1 2 3 4 5 6 7 8 9 10 11 12
next数组 0 1                    

2、接下来看第三位,按照next数组求解方法。第三位a的前一位为第二位的b,b的next值为1对应内容为a,b与a不同,向前继续寻找next值对应的内容来与前一位进行比较。因为找到第一位都没有找到与前一位相等的内容,所以第三位a的next值为1,则:

模式串 a b a b a a a b a b a a
下标 1 2 3 4 5 6 7 8 9 10 11 12
next数组 0 1 1                  

3、接下来看第四位b,b的前一位a的next值1对应内容为a,相同,所以该位b的next值就是前一位a的next值加上1,即为2

模式串 a b a b a a a b a b a a
下标 1 2 3 4 5 6 7 8 9 10 11 12
next数组 0 1 1 2                

4、接下来看第五位a,a的前一位b的next值2对应内容为b,相等,所以该位a的next值就是前一位b的next值加上1,即为3

模式串 a b a b a a a b a b a a
下标 1 2 3 4 5 6 7 8 9 10 11 12
next数组 0 1 1 2 3              

5、接下来看第六位a,a的前一位a的next值3对应内容为a,相等,所以该位a的next值就是前一位a的next值加上1,即为4

模式串 a b a b a a a b a b a a
下标 1 2 3 4 5 6 7 8 9 10 11 12
next数组 0 1 1 2 3 4            

6、接下来看第七位a,a的前一位a的next值4对应内容为b,不相等,向前继续寻找next值对应的内容来与前一位进行比较,b的next值2对应的内容为b,依旧不相等,继续向前寻找,第二位b的next值1对应内容为a,相等。因为是在第二位b处实现的相等,所以第七位a的next值为第二位b的next值上加1,即为2

模式串 a b a b a a a b a b a a
下标 1 2 3 4 5 6 7 8 9 10 11 12
next数组 0 1 1 2 3 4 2          

7、接下来看第八位,同样道理,得出b的next值为2

模式串 a b a b a a a b a b a a
下标 1 2 3 4 5 6 7 8 9 10 11 12
next数组 0 1 1 2 3 4 2 2        

8、接下来看第九位,前一位b的next值2对应内容为b,相等,所以此处next值为3

模式串 a b a b a a a b a b a a
下标 1 2 3 4 5 6 7 8 9 10 11 12
next数组 0 1 1 2 3 4 2 2 3      

9、第十位同理可得,为4

模式串 a b a b a a a b a b a a
下标 1 2 3 4 5 6 7 8 9 10 11 12
next数组 0 1 1 2 3 4 2 2 3 4    

10、第十一位a的前一位b的next值4对应内容为b,相等,所以此处next值为5

模式串 a b a b a a a b a b a a
下标 1 2 3 4 5 6 7 8 9 10 11 12
next数组 0 1 1 2 3 4 2 2 3 4 5  

11、最后,第十二位同理可以得到next值位6

模式串 a b a b a a a b a b a a
下标 1 2 3 4 5 6 7 8 9 10 11 12
next数组 0 1 1 2 3 4 2 2 3 4 5 6


http://www.taodudu.cc/news/show-6748132.html

相关文章:

  • sap测试IDOC include ZXTRKU02
  • ST-Norm: Spatial and Temporal Normalization for Multi-variate Time Series Forecasting(KDD2021)
  • STM32某些基础概念扫盲
  • StyleGAN 架构解读(重读StyleGAN)精【2】
  • ABAP_单据流程中调用IDOC通过PI的方式发送资料 NACE
  • NACE配置SAP output功能
  • ABAP-如何发用邮件附件的方式发送订单打印的PDF
  • S/4 HANA中发票输出切换回NAST
  • S4/HANA ME21N创建PO 输出控制消息按钮丢失解决方法(切换EDI 输出模式BRF+至NAST模式)
  • NAST概述
  • 大学生计算机技能应用大赛比赛流程【Java】
  • 2016江苏省大学生程序设计大赛 JSCPC 总结
  • 大学生html5设计大赛方案,大学生简历设计大赛活动策划书
  • 怎么修改Mac密码?新鲜出炉的修改MAC电脑密码教程
  • 破解苹果电脑系统密码的方法步骤
  • Macbook Pro 密码设置
  • Mac密码该如何更改,Mac密码更改教程
  • Mac电脑没设开机密码却要输入开机密码如何解决?
  • (4)简单置换
  • 置换的轮换表示
  • Linux中的进程管理类、ps 查看当前系统进程状态、内存置换算法LRU、查看与sshd相关进程
  • 【考研数学二——函数和极限知识梳理(思维导图)】
  • js 中函数和对象
  • sort函数和优先队列的自定义方式的梳理
  • (更新中)Python、JavaScript、Java和C++语言的语法对比与梳理
  • javaScript深拷贝和浅拷贝简单梳理
  • ADB(二)_ADBD_main()函数代码梳理
  • Vue中构造数组数据-map和forEach方法梳理
  • JS高级开发-内置对象Object梳理
  • Muduo网络库核心梳理

串′ababaaababaa′的next数组(求next数组思路与实例)相关推荐

  1. 后缀数组 java_Java后缀数组-求sa数组

    后缀数组的一些基本概念请自行百度,简单来说后缀数组就是一个字符串所有后缀大小排序后的一个集合,然后我们根据后缀数组的一些性质就可以实现各种需求. 1 public classMySuffixArray ...

  2. 数据结构-串-KMP算法详解(Next数组计算)(简单易懂)

    文章目录 KMP介绍 一.求Next数组 前后缀表 求最长公共前后缀 最长相等前后缀表转Next数组 二.使用Next数组来匹配字符串 总结 本文章就专讲kmp,暴力匹配就不讲了(我相信能搜索kmp的 ...

  3. 牛客练习赛33 D tokitsukaze and Inverse Number (树状数组求逆序对,结论)

    链接:https://ac.nowcoder.com/acm/contest/308/D 来源:牛客网 tokitsukaze and Inverse Number 时间限制:C/C++ 1秒,其他语 ...

  4. 【leetcode】2248. 多个数组求交集(js实现)

    1. 题目 2248. 多个数组求交集 2. 思路 先找到一个参考集合set1 去遍历nums中的每一个数组,并遍历数组中的每一个元素,依次求两个集合的交集,并将得到的交集赋值给参考集合set1 最后 ...

  5. ural 1297 O(nlogn) 后缀数组求最长回文字串

    把原串复制一份反过来接在原串后面,中间用没出现过的字符隔开,然后跑后缀数组,在原创枚举每一个位为回文中心(分奇偶讨论),则回文串长度相当于原串与反串对应位置的lcp,所以先用ST预处理,然后查询.复杂 ...

  6. 4. 串的【朴素模式匹配算法】、【KPM算法:求next数组、nextval数组】

    串的模式匹配:在主串中,找到与模式串相同的子串,并返回其所在位置. 其实就是给出一个串abc,找到abc在主串的位置[abc都要匹配] 模式串:给出一个串abc 子串:主串中的abc[可能没有] 文章 ...

  7. 后缀数组以及利用后缀数组求取最长公共字串

    后缀树组是一个字符串的所有后缀的排序数组.后缀是指从某个位置 i 开始到整个串末尾结束的一个子串.字符串 r 的从 第 i 个字符开始的后缀表示为 Suffix(i) ,也就是Suffix(i)=r[ ...

  8. KMP-两种方法求next数组

    文章目录 前言 最佳最快方法 原理 方法详述 分析和思考 其他的next数组 总结 最好理解记忆方法 原理 前缀字符串和后缀字符串 部分匹配值 next数组意义 方法详述 转化 思考 测试链接 前言 ...

  9. KMP算法求回溯数组的步骤

    KMP算法到底是什么原理就不说了,各种资料上讲的明明白白,下面我就如何用代码来实现做一下说明和记录. KMP的核心思想就是,主串不回溯,只模式串回溯.而模式串匹配到第几位时失配,要回溯多少,由模式串本 ...

最新文章

  1. 【硬件基础】制作直流电源
  2. 呼叫中心的服务水平管理
  3. 基于VTK的MFC应用程序开发(1)
  4. YUV与RGB互转各种公式 (YUV与RGB的转换公式有很多种,请注意区别!!!)
  5. js中的preventDefault
  6. hough变换检测圆周_hough变换原理以及实现(转载)
  7. 【我所认知的BIOS】— uEFI AHCI Driver(8) — Pci.Read()
  8. 模型堆叠(Stacking)和模型融合的原理与实现以及一个库heamy的介绍
  9. desktop viewer
  10. WebConfig节点详解
  11. 由浅入深了解统计机器翻译模型
  12. 只有程序猿才能看懂的段子,不笑你拿小拳拳捶我!!!
  13. 生成式对抗网络(GAN)实战——书法字体生成练习赛
  14. 笔记记录--基于ccpd数据集利用Paddle OCR训练车牌检测模型
  15. Java—飞花的糖果
  16. 一文搞懂,PO设计模式详解
  17. 设置组件为圆角的方法
  18. 计算机无法用630打印机,lq630打印机怎么恢复出厂设置 lq630打印机恢复出厂设置的步骤教程...
  19. 线性分类和非线性分类
  20. 开发之外,我们还用过哪些装X的神器

热门文章

  1. PPT怎么转换成PDF文件,分享两个方法给大家!
  2. c语言德州扑克课设报告,德州扑克 别在聊天时一不小心泄露了自己的牌力
  3. qq群发软件/百度贴吧营销软件/兴趣部落营销软件使用指南
  4. 抽奖动画大转盘抽奖思路与做法
  5. 【技术变现小技巧】-- Boss直聘 批量求简历
  6. 模仿华为手机管家圆形刻度
  7. 计算机应用基础第一章第二章知识点,全国2013年自考《计算机应用基础》教材大纲第二章...
  8. UE5 烘焙贴图(记录一下)
  9. 【计算机毕业设计】003图书个性化推荐系统的设计与实现
  10. 用Arduino测试ADXL335加速度计如何工作?