[C++]KMP算法实现
2015-04-25 12:56
351 查看
KMP算法说明:http://zh.wikipedia.org/wiki/%E5%85%8B%E5%8A%AA%E6%96%AF-%E8%8E%AB%E9%87%8C%E6%96%AF-%E6%99%AE%E6%8B%89%E7%89%B9%E7%AE%97%E6%B3%95
#include<string> using namespace std; class KMP { public: KMP(string); int search(string txt); private: string pat; static const int R = 256; int* dfa[R]; int M; }; KMP::KMP(string _pat) { pat = _pat; M = pat.length(); for (int i = 0; i < R; i++){ dfa[i] = new int[M]; for (int j = 0; j < M; j++){ dfa[i][j] = 0; } } dfa[pat[0]][0] = 1; for (int X = 0, j = 1; j < M; j++){ for (int c = 0; c < R; c++){ dfa[c][j] = dfa[c][X]; } dfa[pat[j]][j] = j + 1; X = dfa[pat[j]][X]; } } int KMP::search(string txt){ int i, j; int N = txt.length(); for (i = 0, j = 0; i < N&&j < M; i++){ j = dfa[txt[i]][j]; } if (j == M) //如果找到返回在txt中的位置 return i - M; else //找不到则返回txt的长度 return N; }
相关文章推荐
- KMP算法详解及C++实现
- KMP算法实现才 c++
- 【数据结构&&算法系列】KMP算法介绍及实现(c++ && java)
- kmp算法实现(C++版)
- C++实现KMP算法(C风格)
- kmp算法及其c++实现
- C++实现KMP算法(修正版,C++风格)
- KMP算法C++实现
- kmp算法c++实现
- KMP算法匹配原理以及C++实现
- 【转载】【数据结构&&算法系列】KMP算法介绍及实现(c++ && java)
- 字符串匹配KMP算法C++代码实现
- KMP算法 C++实现
- KMP算法C++实现
- KMP算法及c++实现
- 算法串匹配C++实现字符串匹配的KMP算法
- KMP算法C++实现
- KMP算法模板(C++实现)
- C++_KMP算法的实现
- 逐步理解KMP算法C++完整实现