详解KMP算法中Next数组的求法
来源:互联网 发布:战争的好处 知乎 编辑:程序博客网 时间:2024/05/17 04:38
详解KMP算法中Next数组的求法 例如:
3.计算第四位的时候,看第三位a的next值,为1,则把a和1对应的a进行比较,相同,则第四位a的next的值为第三位a的next值加上1。为2。因为是在第三位实现了其next值对应的值与第三位的值相同。
4.计算第五位的时候,看第四位a的next值,为2,则把a和2对应的b进行比较,不同,则再将b对应的next值1对应的a与第四位的a进行比较,相同,则第五位的next值为第二位b的next值加上1,为2。因为是在第二位实现了其next值对应的值与第四位的值相同。
5.计算第六位的时候,看第五位b的next值,为2,则把b和2对应的b进行比较,相同,则第六位c的next值为第五位b的next值加上1,为3,因为是在第五位实现了其next值对应的值与第五位相同。
6.计算第七位的时候,看第六位c的next值,为3,则把c和3对应的a进行比较,不同,则再把第3位a的next值1对应的a与第六位c比较,仍然不同,则第七位的next值为1。
7.计算第八位的时候,看第七位a的next值,为1,则把a和1对应的a进行比较,相同,则第八位c的next值为第七位a的next值加上1,为2,因为是在第七位和实现了其next值对应的值与第七位相同。
序号 1 2 3 4 5 6 7 8
模式串 a b a a b c a c
next值 0 1 1 2 2 3 1 2
next数组的求解方法是:
第一位的next值为0,第二位的next值为1,后面求解每一位的next值时,根据前一位进行比较。首先将前一位与其next值对应的内容进行比较,如果相等,则该位的next值就是前一位的next值加上1;如果不等,向前继续寻找next值对应的内容来与前一位进行比较,直到找到某个位上内容的next值对应的内容与前一位相等为止,则这个位对应的值加上1即为需求的next值;如果找到第一位都没有找到与前一位相等的内容,那么需求的位上的next值即为1。
看起来很令人费解,利用上面的例子具体运算一遍。
1.前两位必定为0和1。
2.计算第三位的时候,看第二位b的next值,为1,则把b和1对应的a进行比较,不同,则第三位a的next的值为1,因为一直比到最前一位,都没有发生比较相同的现象。3.计算第四位的时候,看第三位a的next值,为1,则把a和1对应的a进行比较,相同,则第四位a的next的值为第三位a的next值加上1。为2。因为是在第三位实现了其next值对应的值与第三位的值相同。
4.计算第五位的时候,看第四位a的next值,为2,则把a和2对应的b进行比较,不同,则再将b对应的next值1对应的a与第四位的a进行比较,相同,则第五位的next值为第二位b的next值加上1,为2。因为是在第二位实现了其next值对应的值与第四位的值相同。
5.计算第六位的时候,看第五位b的next值,为2,则把b和2对应的b进行比较,相同,则第六位c的next值为第五位b的next值加上1,为3,因为是在第五位实现了其next值对应的值与第五位相同。
6.计算第七位的时候,看第六位c的next值,为3,则把c和3对应的a进行比较,不同,则再把第3位a的next值1对应的a与第六位c比较,仍然不同,则第七位的next值为1。
7.计算第八位的时候,看第七位a的next值,为1,则把a和1对应的a进行比较,相同,则第八位c的next值为第七位a的next值加上1,为2,因为是在第七位和实现了其next值对应的值与第七位相同。
0 0
- 详解KMP算法中Next数组的求法
- 详解KMP算法中Next数组的求法
- 【模版】KMP算法中next数组的求法。
- KMP算法中next数组的求法分析
- kmp算法中next[]数组求法的基本思想
- KMP的next数组求法详解
- KMP算法next数组求法
- kmp 的next 数组求法
- KMP next数组的求法
- KMP算法next的求法
- 字符串匹配KMP算法中Next[]数组求法
- 字符串匹配KMP算法中Next[]数组求法
- KMP模式匹配算法中next[]数组求法
- 字符串匹配KMP算法中Next[]数组求法
- KMP算法中Next数组及改进后的nextval数组的求法
- KMP算法-next数组的含义和求法
- 关于kmp算法中next数组的求法【针对手算的】
- KMP算法next数组递归求法
- SqlServer 2012 服务器角色
- Python 读取WAV音频文件 画频谱
- android工程添加第三方库.so文件
- MongoDB学习日记(一):安装指南
- Android里的一些小地方
- 详解KMP算法中Next数组的求法
- Python 低通滤波器
- 非ROOT用户安装MySQL
- Toast 弹出反馈操作
- react-native试玩(29)-React Native Playground
- Contains Duplicate
- 加载模块时出现unknown partition table 的原因
- 检查软件下载是否完整 MD5 工具使用 ----- md5sum
- WPF之VirtualizingStackPanel.IsVirtualizing="False"