KMP中next数组的理解
来源:互联网 发布:游戏王网络 编辑:程序博客网 时间:2024/05/22 15:15
next数组是KMP的核心,但对于next数组我们总是有时候感觉明白了,但有时候又感觉没明白,现在我就说下我自己对KMP中next数组的理解,首先next[i]上的数字的意义,next[i]表示的是当匹配到匹配串的第i个字母适配的时候,改跳到的位置,为什么要跳,是因为不想回到0重新浪费时间去比较,在深一点理解,我感觉next[i],里存的是 找两个相同的尽量长的字符串,一个是以从匹配串的第一个字母开始的,另一个是以失配字母i的前一个点结尾的,他俩可以有相交的地方,但不能完全相交,得到这两个串的最大长度后+1,就是next[i],通俗的理解就是假如 1231231234 当匹配到4的时候突然失配了,那么我们就找两个串,以个是以第一个开头,另一个是以4前面的那个3结尾,可以相交但不可以完全相交,得到的就是123123 123123,那么当4失配的时候就直接跳到第二个3后后面的那个1比较就行了,因为当前的这个失配点的前一个点为尾的串和以第一个点为起点的串的相等关系,我们可以有把握的直接跳,减少时间。总之next,KMP给我的感觉就是记忆化搜索,而记忆化搜索我有觉得是DP,所以KMP感觉也是dp吧。毕竟是每一步都不会去走多余的路。
next数组关于循环节几个小应用
(1)i - next[i] 最小循环节(第一个字母开始)
(2)next[i] 最大循环节中的第几位数(此时循环节可交叉)
(3)next[i] != 0 && i % (i - next[i]) == 0,当前是循环节中的最 后一位.
(4)在(3)的前提下 i / (i - next[i]) 表示的最大周期个数,也就是在最小循环节的前提下的最大周期个数。
- KMP中next数组的理解
- KMP中next数组的理解
- KMP中next数组的理解
- KMP--next数组的理解
- HDU 3336 KMP算法中对next数组的理解
- POJ1961_Period_理解KMP中next数组的含义
- kmp next 数组理解
- KMP算法next数组的理解
- KMP算法对next数组的理解
- kmp中next数组的运用
- POJ2752 KMP中next数组的应用
- KMP算法中next数组的计算方法
- KMP算法中next数组的求取
- hdu1358 KMP中next数组的应用
- KMP的next数组
- KMP算法中next数组的理解与算法的实现(java语言)
- KMP算法中next数组的理解与算法的实现(java语言)
- KMP算法和KMP算法中next数组的讲解
- QT内label控件通过opencv显示图像
- django models choices添加选项
- opencv学习--图像拼接之 Stitcher
- 安装python Matplotlib 库
- 如何清除任务栏中自定义通知里的图标
- KMP中next数组的理解
- davinci 学习大纲
- 关于电子元件的申请问题讨论
- C++中的string
- 华强北刷机经历 type password to decrypt storage
- ServletConfig的应用场景
- Android与JavaScript方法相互调用!
- uva 11174 - Stand in a Line(逆元+递推)
- Linux /dev目录详解