KMP算法:next和nextval值计算

KMP算法:next和nextval值计算KMP算法的next和nextval值计算先看看next数据值的求解方法例:下标从1开始(若题中给定下标为0开始,把所有值-1即可)next数组的求解方法:根据前一个字符next,一直循环找到第

大家好,又见面了,我是你们的朋友全栈君。

KMP算法的next和nextval值计算

 

先看看next数据值的求解方法

例:下标从1开始(若题中给定下标为0开始,把所有值-1即可)

<span role="heading" aria-level="2">KMP算法:next和nextval值计算

next数组的求解方法:根据前一个字符next,一直循环找到第一次匹配成功的下标,并把next=1;如果当前字符与下标1字符都不相同,next值就为1(初始下标值)

第一位为0,第二位为1,

第三位:把前一个模式串字符b与下标next值所对应的字符比较,b 和a不同,next为1(初始下标值)

第四位:前一个,c   c和a不同,next为1

第五位:a和a相同(下标为1)1+1=2

第六位:b和b相同(下标为2)2+1=3

第七位:a和c不同(下标为3),继续找,c下标为1,a和a相同(下标为1) 1+1=2

 

nextval数组求解方法:根据next数组的值作为下标找到第一个不同的字符,把它的下标作为nextval的值;否则继续循环比较,直到与第一个字符也相同,此时,nextval值为0

第一位为0,第二位为1,

第三位:(当前下标字符)c与a(next值1作为下标的字符进行比较),若不同则为初始下标值1

第四位: a和a相同(第一个字符),nextval值为0

第五位:b和b(下标为2),相同,继续比较,b的next为1,b和下标为1的比,即b和a比,不同,则nextval值为1

第六位:a和c(下标为3),不同,nextval为下标的值 3

第七位:a和b(下标为2),不同,nextval为下标的值 2

注:如果下标从0开始,只需把所有的next和nextval值-1就是

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155234.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月2日 下午3:36
下一篇 2022年7月2日 下午3:36


相关推荐

  • paip.提高工作效率–数据绑定到table原则和过程Angular js jquery实现

    paip.提高工作效率–数据绑定到table原则和过程Angular js jquery实现

    2022年1月3日
    57
  • Sqoop问题解决:运行报错java.lang.RuntimeException: Could not load db driver class: com.mysql.jdbc.Driver

    Sqoop问题解决:运行报错java.lang.RuntimeException: Could not load db driver class: com.mysql.jdbc.DriverSqoop问题解决:运行报错报错信息:java.lang.RuntimeException:Couldnotloaddbdriverclass:com.mysql.jdbc.Driver原因分析:未将mysql关系型数据库驱动包放到sqoop/lib目录下解决方法:将mysql关系型数据库驱动包放到sqoop/lib目录下这里需要下载mysql关系型数据库驱动包放到本地/opt/software/下mysql依赖包下载链接:https://pan.baidu.com/s

    2022年7月25日
    17
  • idea 2021 mac 激活码(JetBrains全家桶)

    (idea 2021 mac 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月21日
    115
  • 自制USB转232线

    来自http://www.dzkf.cn/upimg/allimg/0610/1_23125438.jpghttp://download1.csdn.net/down3/20070615/15181433296.pdfhttp://download1.csdn.net/down3/20070615/15181433296.pdf

    2022年4月7日
    58
  • 脚本是什么?[通俗易懂]

    脚本是什么?[通俗易懂]初次接触“脚本”一词并不知道这一听似非常高大上的东西是什么,尔后逐渐接触,虽有了解,但也没有仔细地总结和思考过,今日百度了一下,在此小小总结。“脚本”其实就是一段代码,一个程序。这与我们学习C语言时,写的第一个“helloworld”显示程序没有太大的区别,那为什么这个向程序之神打招呼的“helloworld”程序我们不称其为脚本呢?因为“脚本”有这些特别之处:1、脚本语法比较简单…

    2025年7月26日
    5
  • java中英文切换_中英文切换

    java中英文切换_中英文切换首页 varzh index index1 首页 index2 产品实例 varen index index1 index index2 Productexamp 服务支持 varzh serviceSuppo serviceSuppo 首页 serviceSuppo 产品实例 varen

    2026年3月20日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号