重拾KMP
来源:互联网 发布:逆战刷枪软件截图 编辑:程序博客网 时间:2024/04/28 05:46
今天重新把KMP看了一下。
这个博客讲的不错,马克之。
点击打开链接
#include<iostream>#include<cstring>#include<string>using namespace std;string Pattern;string Text;int next[1000];void get_nextval()//获取next的函数,有点动态规划的感觉 { int j=0,k=-1; int n=Pattern.length(); next[0]=-1; while(j<n) { if(k==-1||Pattern[j]==Pattern[k])//如果去掉k==-1这段,剩下比较容易理解。k==-1设计的比较巧妙 { j++; k++; if(Pattern[j]!=Pattern[k]) next[j]=k; else next[j]=next[k]; } else k=next[k]; }}int KMP() {get_nextval();int index,i=0,j=0;int N=Text.length();int n=Pattern.length();while(i<N&&j<n){if(Text[i]==Pattern[j]){++i;++j;}else{index=i-next[j];if(next[j]!=-1)j=next[j];else{j=0;i++;}}}if(j=n-1)return index;// 匹配成功elsereturn -1; }int main()//abCabCad{Text="0123456789adCadCadasaasdadf"; Pattern="adCadCad"; cout<<KMP()<<endl; return 0;}
0 0
- 重拾KMP
- KMP
- KMP
- KMP
- KMP
- KMP
- KMP
- kmp
- kmp
- KMP
- kmp
- KMP
- KMP
- KMP
- kmp
- KMP
- KMP
- kmp
- Android学习记录(10)—Android之图片颜色处理
- why ajax callback error method?
- YUI EventTarget例子
- Jstl核心标签库详解
- iOS————UIActivityIndicatorView活动指示器
- 重拾KMP
- 微信公众平台开发之天气查询功能
- 九度OJ 1107 搬水果 -- 哈夫曼树 2011年吉林大学计算机研究生机试真题
- cocos2d-x中文显示问题解决方法(使用cocos2dx中自带的iconv实现)
- node.js require 实现机制初窥;pomelo代码分析5----------- pomel-loader模块
- POJ 1942 Paths on a Grid 组合以及处理阶乘
- http 错误代码表
- MFC中获取相关目录总结
- TestNG基本注释二:基本注释解释