KMP代码实现
来源:互联网 发布:xbox无法连接网络 编辑:程序博客网 时间:2024/06/11 06:54
void GeneratePrefix(const string& pattern, int* prefix){int length = pattern.size();prefix[1] = 0;int LOLP = 0; //LOLP表示最长的前缀数组int NOCM; //number of characters matchedfor(NOCM = 2; NOCM <= length; ++NOCM){while(LOLP > 0 && pattern[NOCM-1] != pattern[LOLP])LOLP = prefix[LOLP];if(pattern[NOCM-1] == pattern[LOLP])++LOLP;prefix[NOCM] = LOLP;}}void KMPMatch(const string& pattern, const string& target){int size1 = pattern.size();int size2 = target.size();if(size1 > size2)return;int prefix[size1];GeneratePrefix(pattern, prefix);int NOCM = 0;for(int i = 0; i < size2; ++i){while(NOCM > 0 && pattern[NOCM] != target[i])NOCM = prefix[NOCM];if(pattern[NOCM] == target[i])++NOCM;if(NOCM == size1){cout << "Matched! The start index is:" << i-size1+1 << endl;NOCM = prefix[NOCM];}}}
0 0
- KMP算法-代码实现
- KMP C++实现代码
- kmp代码实现
- KMP算法代码实现
- KMP算法实现代码
- KMP代码实现
- KMP算法代码实现
- KMP算法C代码实现
- KMP算法C代码实现
- KMP算法以及代码实现
- KMP算法C 代码代码实现
- KMP算法的C语言代码实现
- kmp算法的c代码实现
- KMP字符串匹配C++代码实现
- KMP算法的C++实现代码
- KMP算法简介及代码实现
- KMP算法的代码实现一
- KMP 算法实现 及代码解释
- Java并发编程:并发容器之CopyOnWriteArrayList
- CodeForces 589 J Cleaner Robot
- Android Drawable之LayerDrawable
- UVA-10082
- firefox历史版本下载路径
- KMP代码实现
- 第二周《C语言及程序设计》实践项目33 三种循环语句
- 设计模式C++版:第二式抽象工厂
- 图数据库Neo4j使用
- HDU 5847 构造
- xftp 登录远程服务器
- Effective Modern C++ 条款9 用别名声明(alias declaration)代替typedef
- 推理集 —— 物质与成分及性质的研究
- SDUT2107图的深度遍历