C++实现KMP算法(优化版)
来源:互联网 发布:pathfinder软件价格 编辑:程序博客网 时间:2024/03/29 13:58
/* * Main.cpp * * Created on: Oct 7, 2015 * Author: chris */#include<iostream>#include<vector>#include<string>using namespace std;void get_next(const string pat, vector<int>& next){next.resize(pat.length(), 0);int i = 1, j = 0;while(i < pat.length()-1) {if(pat[i] == pat[j]) { // matched.++i; ++j; // record next.if(pat[i] != pat[j])next[i] = j;elsenext[i] = next[j];}else if (j != 0) // doesn't matched.j = next[j]; // back trace.else // no matched.next[++i] = 0;// reset.}//while}void Index_KMP(const string str, const string pat, vector<int>& inds){vector<int> next;get_next(pat, next);inds.clear();int i = 0, j = 0;while(i < str.length()) {if(str[i] == pat[j]){ // matched.++i; ++j; // move on.if(j >= pat.length()) {inds.push_back(i - pat.length());j = 0;//reset.}}else if ( j != 0 ) // back trace.j = next[j];else // impossible.++i;}//while}int main(void){string str1, str2;while(cin >> str1 >> str2) {vector<int> inds;Index_KMP(str1, str2, inds);for(int i = 0; i < inds.size(); ++i) {cout << inds[i] << " ";}cout << endl;cout.flush();}//while.return 0;}
0 0
- C++实现KMP算法(优化版)
- KMP算法(c++)实现
- KMP算法C实现
- KMP算法c实现
- KMP算法 C实现
- [C++]KMP算法实现
- C++实现KMP算法(C风格)
- KMP算法c语言实现
- KMP算法C#/c++实现
- KMP算法C代码实现
- KMP算法--c语言实现
- KMP算法C代码实现
- C++实现Kmp字符匹配算法的优化版
- KMP算法(C++)
- [转]KMP算法实现(源码c/c++)
- Kmp字符匹配算法优化C++实现
- KMP算法——C++优化实现
- KMP算法的实现及优化
- 1.3.5 head.s开始执行(2)
- 找出s的子串中字典序第k小的“半回文串” Trie Codeforce Div. 2 Ann and Half-Palindrome
- 使用c#,WPF,模仿IPhone的Loading(加载)效果
- 如何设置插入的Toolbar资源中按钮保持按下状态
- 手游创业漫话四 (我要做什么游戏 中)
- C++实现KMP算法(优化版)
- java(Android)——内存泄露的一些经典案例
- 银联基于OpenStack的金融私有云建设实践
- Android内核sysfs中switch类使用实例
- 更换phpcms后台编辑器自动添加的<div>标签为<P>标签
- 第6周—项目4 数制转换
- 1.3.5 head.s开始执行(3)
- spring 使用spel
- hdu4267A Simple Problem with Integers 线段树