字符串匹配——KMP算法
来源:互联网 发布:楠木鞋架淘宝 编辑:程序博客网 时间:2024/06/05 20:18
字符串匹配——KMP算法
KMP(Knuth-Morris-Pratt)算法分两部分,先计算Next[]数组,然后进行串匹配。
KmpNext算法描述如下:
输入:样本串P[0..m-1],m为样本长度。
输出:数组Next[0..m-1],即Next函数值。
void KmpNext(char P[],int m,int&Next[]){ int i,j; Next[0]=-1; for(i=1; i<m; i++){ j=Next[i-1]; while(P[j+1]!=P[i]&&(j>=0)) j=Next[j]; if(P[i]==P[j+1]) Next[i]=j+1; else Next[i]=-1; }}
计算完Next[]数组后,进行串匹配。
KmpStringMatch
算法描述如下:
输入:样本P[0..m-1],(m>0),文本T[0..n-1],Next[0..m-1].
输出:P在T中第一次出现的首元下标,如果没有匹配则输出“Failure”。
void KmpStringMatch(char[]P,char[]T,int m, int n, int[] Next){ int i=j=0; while(i<=n-m+1){总共尝试//匹配n-m+1次 while((j>=0)&&(P[j])!=T[i]) j=Next[j]; if(j==m-1){ cout<<i<<endl; return; } else{ i++; j++;} } cout<<"Failure"<<endl; return;}
阅读全文
1 0
- 字符串匹配—KMP算法
- 字符串匹配算法——KMP算法
- 字符串匹配算法——KMP算法
- 字符串匹配算法——KMP算法
- KMP 算法 —— 字符串匹配算法
- 字符串匹配算法——KMP算法
- KMP 算法总结—字符串匹配算法
- 字符串模式匹配——KMP算法
- 字符串模式匹配——KMP算法
- KMP算法——字符串匹配问题
- 字符串匹配算法——KMP && BF
- 字符串匹配——KMP算法
- 字符串匹配——KMP算法
- 字符串匹配——KMP算法
- 字符串匹配——KMP算法
- KMP算法——字符串匹配
- 字符串匹配——KMP算法
- 字符串匹配——KMP算法
- Ubuntu如何使用锐捷客服端
- 前端性能优化之-css阻塞渲染
- SQL Server 2017, Cluster-less AlwaysOn
- java: switch中的参数类型
- Java 使用 switch 语句和枚举类型
- 字符串匹配——KMP算法
- EMAIL服务器的创建与配置
- ListView 或 Recyclerview 子项里面再添加子项
- MSYQL学习笔记(一) ----数据库基本操作
- html创建菜单列表
- cnn architecture
- ThreadLocal和InheritableThreadLocal的区别
- c语言中结构体对齐详解
- 史上最最简单的登录注册方法(Bomb后端云)