KMP next数组的求法
来源:互联网 发布:淘宝网欧式台灯 编辑:程序博客网 时间:2024/05/14 22:03
KMP 算法的next数组求法:
void getNext(char* ptn,int next[]){ int i=0; int j=-1; int len=strlen(ptn); next[0]=-1; while(i<len){ if(-1==j||ptn[i]==ptn[j]){ i++;j++; next[i]=j; }else{ j=next[j]; } }}
怎么理解呢?
首先我们需要知道这几点:
- 如果(-1==j||ptn[i]==ptn[j])这个条件不成立,j会从右边往左按照j_{k+1}=next[j_{k}]更新自己的值。
- 如果(-1==j||ptn[i]==ptn[j])这个条件成立,此时可以计算next[i+1]的值为j+1。
我看看这个过程:
当i=6进入while循环之前,j=next[6]。当i=6进入while 循环时执行,
ptn_src: A_0 A_1 A_2 A_3 A_4 A_5 A_6 A_7
ptn_ptn A_0 A_1 A_2 A_3 A_4 A_5
如果ptn[6]!=ptn[next[6]], 那么下一步比较的是ptn[6]!=ptn[next[next[6]]],如果还不成立继续比较ptn[6]!=ptn[next[next[next[6]]]]直到条件成立或者j=0。
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数组的含义和求法
- KMP算法next的求法
- KMP算法next数组递归求法
- KMP算法-Next数组递归求法
- nyoj259 茵茵的第一课
- sping+Jersey实现RESTful webservice
- VMware Workstation 虚拟机设置连接U盘
- 在CentOS 6.3/6.5 64bit上为python 2.7.10安装pycurl模块
- 描述 Windows 操作系统内存管理的方法
- KMP next数组的求法
- eclipse关联androidSDK源码方法附带下载地址
- 安全篇-AES/RSA加密机制
- Java连接数据库(JDBC)之三:java访问数据库MySQL实例
- 黑马程序员——Java基础---IO流
- 机器学习之开源库
- HBase,Redis
- Duplicate Pair(异或操作)
- 《开源分享2》:《开源框架实战宝典电子书V1.0.0》完整版!