KMP算法模板(字符串匹配问题)
2017-11-01 15:50
197 查看
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 1000005; const int maxm = 10005; struct K_M_P{ int target[maxn]; int pattern[maxm]; int next[maxm]; int target_len; int pattren_len; }; K_M_P kmp; int KMP(){ //预处理计算next数组; kmp.next[0] = 0; kmp.next[1] = 0; for(int i = 1; i < kmp.pattren_len; ++i) //递推边界初值 { int j = kmp.next[i]; while(j && kmp.pattern[i] != kmp.pattern[j]) j = kmp.next[j]; kmp.next[i+1] = kmp.pattern[i] == kmp.pattern[j] ? j + 1 : 0; } //kmp int j = 0; //当前节点编号 for(int i = 0; i < kmp.target_len; ++i) //文本串指针 { while(j && kmp.pattern[j] != kmp.target[i]) j = kmp.next[j]; //若失配则加next[j] 向下滑行 if(kmp.pattern[j] == kmp.target[i]) j++; if(j == kmp.pattren_len) //匹配成功 { printf("%d\n", i - kmp.pattren_len + 1 + 1); //若从零开始计数则+1+1; return -1; } } return 1; //无匹配 }
相关文章推荐
- KMP算法模板及问题解决(HDU 1711)(hihocoder 1015 KMP)(HDU 1686)(POJ3461)(HDU1358)
- 字符串匹配问题(KMP算法)
- KMP算法解决字符串匹配问题
- KMP算法——字符串匹配问题
- 算法导论第32章——字符串匹配问题(KMP算法)
- KMP算法解决字符串匹配问题
- KMP算法解决字符串匹配问题
- django模板与vue.js冲突问题
- kmp算法模板
- 关于INFOPATH2007如何下载微软的模板问题
- html-webpack-plugin中的模板传值无效的问题
- 模板_HDU2255奔小康赚大钱_最大权最大匹配问题_KM算法
- ThinkPHP3.2.3框架模板文件中导入css,js文件相关问题
- 解决利用模板装linux网卡eth1问题
- DLX模板 +解树独(Dancing Links X)精确覆盖问题
- KMP算法的几种模板
- 模板页的JS和CSS路径在内容页加载问题。
- 高精度计算模板——棋盘覆盖问题
- webpack解决html模板问题?如单独抽离header.html
- **Minimum Window Substring & String类问题模板