zoukankan      html  css  js  c++  java
  • KMP算法

    1、next[ ] 数组

      next [ j ]=s 的最长相等前后缀长度加 1 

      next[1]=0 (规定)  next[2]=1

      KMP平均时间复杂度为O(n+m)

    2、nextval[ ] 数组

      nextval数组就是在next数组的基础上,把回溯的一步一步的中间步骤省略,直接写出最终要移动的位置。(因为根据next数组值找到上一个跳转位置的时候,这个位置也有一个对应的next数组值,因此有可能不是最终位置,还要根据这个位置的next数组往回找)。

      具体的方法:用 i 所对应的next [ i ] 所指的关键字与 i 所指的关键字进行比较。

            如果不同,则nextval [ i ] = next [ i ]

            如果相同,则nextval [ i ]用next [ i ] 所指的上一个位置所对应的nextval [ next [ i ] ] 来代替,从而达到优化的目的。

    3、例题:

      已知模式串T=‘abababcabc’ ,则next函数值及nextval函数值为?

      

        

  • 相关阅读:
    TortoiseGit
    申请成功
    web.xml文件中配置ShallowEtagHeaderFilter需注意的问题
    消息队列调研
    二阶段提交
    ACID CAP BASE介绍
    SQL NULL Values
    HTTPS原理
    ID生成器详解
    如何变得更聪明
  • 原文地址:https://www.cnblogs.com/oaoa/p/13976020.html
Copyright © 2011-2022 走看看