字符串匹配算法MP
2018-01-04 16:55
399 查看
#include<iostream> using namespace std; void preMp(const char *x,int m,int preMpNext[]){ int i,j; i = 0; j = preMpNext[0] = -1; while(i<m) { while(j > -1 && x[i] != x[j]){ j=preMpNext[j]; } preMpNext[++i] = ++j;// here "i" will equal m,not right! // cout << "i:" << i << endl; } } int indexMP(const char *s,int n,const char *p,int m){ int *preMpNext = new int[m]; preMp(p,m,preMpNext); int i=0,j=0; while(j<n){ while(i>-1&&p[i]!=s[j]) { i = preMpNext[i]; } i++; j++; if(i>=m){ return j-i; } } delete []preMpNext; return -1; } int main(){ const char *p = "caatcat"; // s = NULL; int length = strlen(p); int *preMpNext = new int[length]; preMp(p,length,preMpNext); for(int i=0;i<length;i++){ cout << i << ":" << preMpNext[i] <<","; } cout << endl; cout << p << endl; delete []preMpNext; char *s2 = "ctcaatcacaatcat"; int index = indexMP(s2,strlen(s2),p,strlen(p)); cout << "index :" << index << endl; return 0; }
0:-1,1:0,2:0,3:0,4:0,5:1,6:2, caatcat index :8
相关文章推荐
- 字符串匹配 KMP 算法
- 字符串匹配的三种算法
- 字符串匹配算法集合
- 算法模板——KMP字符串匹配
- 字符串匹配高效算法 KMP-c++代码
- 算法-字符串匹配之KMP
- 字符串匹配(Boyer-Mooer 算法)
- 字符串匹配算法之Aho-Corasick
- 字符串匹配算法SMA 总结之四:自动机算法
- KMP字符串匹配算法——用最容易理解的方式描述
- 字符串匹配算法horspool
- php实现字符串匹配算法——sunday算法
- 数据结构与算法之KMP 字符串匹配
- 字符串匹配算法之二------Trie字典树
- 经典算法设计:动态规划(2)字符串匹配
- 各种字符串匹配算法代码 速度比较
- Java 字符串匹配算法
- 关于线性字符串匹配的算法-----KMP的算法
- 字符串匹配算法之KMP算法和BM算法
- 重学算法 系列4 - 朴素字符串匹配算法 (Brute Force算法)