串的模式匹配——KMP算法
来源:互联网 发布:淘宝cf刷枪软件 编辑:程序博客网 时间:2024/05/18 02:08
KMP算法代码如下:
,当j=next[1];亦即j值为0时,令j++,使得j值为1,而i不变,结果使得模
因此T[i]范围为:T[2]~T[T[0]-1];T[j]范围为:T[1]~T[T[0]-2];
get_next函数中,
else j=next[j];
该语句的意思为:当T[i]!=T[j]时,i不变,而j则回溯到next[j],亦即回
到满足T[1]~T[k-1]==T[j-k+1]~T[j-1]的k的位置,此时j==k;
还有值得一提的是,next[2]的值总为1,从get_next函数可以看出,具体如下:
if(j==0||T[i]==T[j])
{++i; ++j; next[i]=j;}
当j==0时,则++i;++j;-->i==2,j==1.
int Index_KMP(SString S,SString T,int pos){ i=pos;j=1; while(i<=S[0]&&j<=T[0]) { if(j==0||S[i]==T[j]) {++i;++j;} else j=next[j]; } if(j>T[0]) return i-T[0]; else return 0;}void get_next(SString T,int next[]){ i=1; next[1]=0; j=0; while(i<T[0]) { if(j==0||T[i]==T[j]) {++i; ++j; next[i]=j;//下一趟从T[j]与T[i]开始比较} else j=next[j]; }}
理解KMP算法的难点在于理解get_next函数,在上面代码可看到,当j==1,亦
即模式串第一个字符就与主串不匹配时,令next[1]=0;在Index_KMP函数中,当j=next[1];亦即j值为0时,令j++,使得j值为1,而i不变,结果使得模
式串从第一个开始与主串比较。
因此T[i]范围为:T[2]~T[T[0]-1];T[j]范围为:T[1]~T[T[0]-2];
get_next函数中,
else j=next[j];
该语句的意思为:当T[i]!=T[j]时,i不变,而j则回溯到next[j],亦即回
到满足T[1]~T[k-1]==T[j-k+1]~T[j-1]的k的位置,此时j==k;
还有值得一提的是,next[2]的值总为1,从get_next函数可以看出,具体如下:
if(j==0||T[i]==T[j])
{++i; ++j; next[i]=j;}
当j==0时,则++i;++j;-->i==2,j==1.
然后再执行next[2]=1;
get_next函数的改进
void get_nextval(SString T,int next[]){ i=1; next[1]=0; j=0; while(i<T[0]) { if(j==0||T[i]==T[j]) { ++i; ++j; if(T[i]!=T[j]) next[i]=j; else next[i]=next[j]; // } else j=next[j]; }}
0 0
- 串模式匹配的改进算法——KMP算法
- 串的模式匹配算法——KMP算法解析
- 串的模式匹配算法——KMP
- 串的模式匹配——KMP算法
- 串的模式匹配——KMP算法攻克
- 数据结构——串(朴素的模式匹配算法、KMP模式匹配算法)
- 模式匹配算法的改进——KMP算法
- 改进的模式匹配算法——KMP算法
- 串的模式匹配KMP算法
- 串的模式匹配 经典KMP算法
- 串的模式匹配KMP算法
- 串的模式匹配改进--KMP算法
- 串的模式匹配-KMP算法
- 串的模式匹配KMP算法模板
- 【数据结构】 串的模式匹配算法KMP
- 串的模式匹配算法(KMP)
- 串的模式匹配---------kmp算法
- 串的模式匹配:KMP算法
- 张铁林忆吴若甫绑架案 “皇阿玛”曾是绑架对象
- C++11 多线程编程
- Android Native 代码 Release 编译 - 混淆 Native 代码
- qq音乐播放器2014最新版 v10.21.4270 官方版
- 【嵌入式Linux学习七步曲之第一篇 Linux主机开发环境】虚拟机下Linux和windows的文件共享――mount方式
- 串的模式匹配——KMP算法
- caxa2011破解版 64位&32位 机械版
- PrimeSense 推出新的 Grab Detector使用方法介绍
- Afinal简介
- input搜索框中文字点击消失且提交后判断是否空白
- Python十分钟入门
- 面向对象的五个基本原则
- springmvc No mapping found for HTTP request with URI in Dispatc
- ADF11g:将Application Module中的方法发布为webservice