kmp算法
来源:互联网 发布:ubuntu与fedora的异同 编辑:程序博客网 时间:2024/04/30 01:06
#include <iostream>#include <string.h>using namespace std;void CalNext(const char *pattern, int next[]){ int j=0; int len = strlen(pattern); next[0]=-1; int k=-1; while(j < len-1){ if((k==-1) || pattern[k] == pattern[j]){ //对啊。一直遍历嘛。所以要一直++ ++k; ++j; next[j] = k; }else{ k = next[k];//递归 } }}int KMP(int next[], const char *text, const char *pattern){ int i=0,j=0,ans=0; int n = strlen(text); int len = strlen(pattern); while(i<n){ //if(j==-1 || text[i]==pattern[i]){ if(j==-1 || text[i]==pattern[j]){ ++i; ++j; }else{ j = next[j]; } if(j==len){ ans = i-len; break; } } return ans;}int main(){ int next[5]; char str[]="abcdabaabef"; char *text = "abcdabaabef"; char *pattern = "abaab"; CalNext(pattern,next); cout<<"位置"<<KMP(next, str, pattern)<<endl; cout<<"位置"<<KMP(next, text, pattern)<<endl; return 0;}
0 0
- KMP算法详解 【KMP】
- 【KMP】KMP算法模板
- KMP hihoCoder1015 KMP算法
- kmp算法
- KMP算法
- KMP算法
- KMP算法
- KMP算法
- KMP 算法
- kmp算法
- KMP算法
- kmp算法
- KMP算法
- KMP算法
- kmp算法
- kmp算法
- KMP算法
- KMP算法
- HDU 1060 - Leftmost Digit
- LD_LIBRARY_PATH的使用方法
- MyBatis第二天
- 【机器学习基础】梯度提升决策树
- uva 524Prime Ring Problem
- kmp算法
- 浅谈javaBean
- Oracle 行转列小结
- GCC __attribute__ ((packed))
- Cocos2dx_世界坐标和模型坐标
- Android常用Uri
- 30天自制操作系统day21
- 构建高并发高可用的电商平台架构实践
- 从is(":checked")说起