KMP算法
来源:互联网 发布:软件测试老是面试java 编辑:程序博客网 时间:2024/05/16 01:23
#include<iostream>#include<string>using namespace std;int *nextfun(string P){int m = P.length();int *ret = new int[m];ret[0] = 0;for(int i = 1 ; i < m ; i++){int k = ret[i-1];if(P[i] == P[k]){ret[i] = k + 1;}else{while(P[i]!=P[k] && k>0)k = ret[k-1];if(P[i] == P[k])ret[i] = k + 1;elseret[i] = 0;}}return ret;}int KMPStrMatch(string S,string P,int *N){int slen = S.length(),plen = P.length();if(slen < plen)return -1;int i,j=0;for(i = 0 ; i < slen ; i++){while(P[j] != S[i] && j > 0)j = N[j-1];if(P[j] == S[i])j++;cout<<"i="<<i<<";"<<"j="<<j<<endl;if(j == plen)return (i-j+1);}return -1;}int main(){string S="abaabababba";string P = "abaa";int* a = nextfun(P);for(int i = 0 ; i < 5 ; i++){cout<<a[i]<<" ";};cout<<endl;cout<<KMPStrMatch(S,P,a)<<endl;}
0 0
- KMP算法详解 【KMP】
- 【KMP】KMP算法模板
- KMP hihoCoder1015 KMP算法
- kmp算法
- KMP算法
- KMP算法
- KMP算法
- KMP算法
- KMP 算法
- kmp算法
- KMP算法
- kmp算法
- KMP算法
- KMP算法
- kmp算法
- kmp算法
- KMP算法
- KMP算法
- 图的广度优先遍历算法JAVA实现
- oracle转储
- 熵编码
- Siemens.LMS.Samtech.Wind.Turbines.rev15.SL1.Win32_64 2DVD
- sql plus 抢救数据(测)
- KMP算法
- java 获取两段日期之间的日期 获取星期
- 服务器返回状态码
- Hibernate懒加载解析
- pyhandle
- 通过NSDateComponents设置NSDate,组件冲突的问题
- c/c++中typedef详解
- Log4j的作用
- 使用java语言,将一个一维数组的元素逆序输出