KMP算法的实现
来源:互联网 发布:淘宝售后服务内容 编辑:程序博客网 时间:2024/05/16 02:27
KMP算法是经典的字符串匹配算法,巧妙的利用了匹配字符串本身的信息,经过摊还分析后,可以得到O(N)的时间复杂度
#include <string>#include <iostream>#include <vector>using namespace std;vector<int> Compute_M_Function(string s);void KMP_MATCHER(string s, string p){int n = s.size();int m = p.size();vector<int> svec = Compute_M_Function(p);int i = 0;int j = 0;while (i < n&&j < m){if (j == -1 || s[i] == p[j]){i++;j++;}elsej = svec[j];}if (j >= m)cout << "match it!!" << i - m << endl;elsecout << "no match !!" << endl;}vector<int> Compute_M_Function(string s) //计算字符串本身的信息。{int len = s.size();if (len == 0)return vector<int>();vector<int> svec(len,-1);int k = -1; for (int i = 1; i < len; i++){while (k > -1 && s[k+1] != s[i])k = svec[k];if (s[k+1] == s[i])k = k + 1;svec[i] = k;}return svec;}
0 0
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- kmp算法的实现
- kmp算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- java实现的KMP算法
- C++实现的KMP算法
- KMP算法的JAVA实现
- matlab中的diag
- JAVA实现矩形覆盖问题(《剑指offer》)
- mtk pwm&&linux timer
- 在Oracl测试window里面多表删除
- Yii
- KMP算法的实现
- 背包理论解析
- Bitmap,jpg,png区别以及在Android上实现不载入内存压缩图片
- linux中字符串转换函数 simple_strtoul
- php面试题之五——PHP综合应用(高级部分)
- Linux下massan使用
- 仿微信用户反馈功能实现
- django 实现web接口 python3模拟Post请求
- 课程设计:银行系统的设计与实现