zoukankan      html  css  js  c++  java
  • kmp算法中的next数组实例解释

    假设求串′ababaaababaa′的next数组

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

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

    模式串ababaaababaa
    下标 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,则:

    模式串ababaaababaa
    下标 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

    模式串ababaaababaa
    下标 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

    模式串ababaaababaa
    下标 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

    模式串ababaaababaa
    下标 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

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

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

    模式串ababaaababaa
    下标 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

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

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

    模式串ababaaababaa
    下标 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

    模式串ababaaababaa
    下标 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

    模式串ababaaababaa
    下标 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

    综上,串′ababaaababaa′的next数组为011234223456

  • 相关阅读:
    mysql常用技能分享
    php生成器使用总结
    MySQL索引使用方法和性能优化
    servlet相关
    UML图
    How Tomcat Works
    字符串编码
    高效工作
    php 设计模式总结
    python之装饰器
  • 原文地址:https://www.cnblogs.com/lanqingzhou/p/8267879.html
Copyright © 2011-2022 走看看