KMP算法 C++实现
2014-12-07 15:41
302 查看
#include <iostream> #include <string> #include <vector> using namespace std; void getNext(const string &substr, vector<int> &next) { next.clear(); next.resize(substr.size()); int j = -1; next[0] = -1; for(int i = 1; i < substr.size(); ++i) { while(j > -1 && substr[j + 1] != substr[i]) j = next[j]; if(substr[j + 1] == substr[i]) ++j; next[i] = j; } } void kmp(const string &str, const string &substr, vector<int> &next) { int cnt = 0; getNext(substr, next); int j = -1; for(int i = 0; i < str.size(); ++i) { while(j > -1 && substr[j + 1] != str[i]) j = next[j]; if(substr[j + 1] == str[i]) ++j; if(j == substr.size() - 1) { cout << "find in position" << i << endl; ++cnt; j = next[j]; } } if(cnt == 0) cout << "not find" << endl; } int main() { string str, substr; cin >> str >> substr; vector<int> next; kmp(str, substr, next); return 0; }
相关文章推荐
- KMP算法的C++实现代码
- 数据结构_串_串的模式匹配_KMP算法_C++实现
- KMP算法C++实现
- KMP算法——C++优化实现
- KMP算法匹配原理以及C++实现
- KMP算法C++实现
- KMP算法(C++实现)
- kmp算法c++代码实现
- KMP算法C++实现
- KMP算法及c++实现
- 数据结构_串_用链表做存储结构实现KMP算法_C++实现
- 算法串匹配C++实现字符串匹配的KMP算法
- C++实现字符串匹配的KMP算法
- KMP算法C++ 实现
- kmp算法C++源码实现
- KMP算法 (C++实现)
- C++实现的KMP算法
- KMP算法 (C++实现)
- [C++]KMP算法实现
- 逐步理解KMP算法C++完整实现