KMP算法(下篇)
来源:互联网 发布:java foreach能倒序 编辑:程序博客网 时间:2024/06/06 19:54
/* * KMP 算法 * 要点如下: * 1 如何构建next表 * 2 如何利用next表进行模式匹配 * 指针位置的控制问题 * 数据结构上给的算法更精炼 */#include <cstdio>#include <cstring>void get_next(char *T, int next[]) { int len = strlen(T); int i = 0; int j = -1; next[0] = -1; while (i < len-1) { if (j==-1 || T[i] == T[j]) { ++i, ++j; if (T[i] != T[j]) next[i] = j; else next[i] = next[j]; } else j = next[j]; }}int Index_KMP(char *S, char *T, int pos) { int len1 = strlen(S); int len2 = strlen(T); int *next = new int[len2]; get_next(T, next); int i = pos-2; int j = -1; while (i < len1 && j < len2) { if (j==-1 || S[i]==T[j]) {++i; ++j;} else j = next[j]; } delete [] next; if (j >= len2) return i - len2; else return 0;}int main() { char *str1 = "ababaaababababcaaaa"; char str[] = "ababababca"; int pch = Index_KMP(str1, str, 1); printf("%d\n", pch+1); return 0;}
0 0
- KMP算法(下篇)
- KMP算法详解 【KMP】
- 【KMP】KMP算法模板
- KMP hihoCoder1015 KMP算法
- kmp算法
- KMP算法
- KMP算法
- KMP算法
- KMP算法
- KMP 算法
- kmp算法
- KMP算法
- kmp算法
- KMP算法
- KMP算法
- kmp算法
- kmp算法
- KMP算法
- js拖拽
- Js获取当前日期时间及其它操作
- c++ 11 10个基本新特新
- [UVA 10615]Rooks[二分图匹配]
- 一个Demo理解工厂设计模式
- KMP算法(下篇)
- 利用htmlunit和jsoup来实现爬取js的动态网页
- 怎样学习 C++ STL?
- hdu 5592 线段树 + 二分
- 【Unix/Linux编程实践】文件系统:编写pwd
- WebSocket的过程与理解
- 【郝斌数据结构自学笔记】57-59_递归8 _ 汉诺塔_1线性结构总复习 2线性结构和非线性结构关系 3栈队列链表数组之间的关系【重点】
- 在win10+Linux Ubuntu双系统下安装win xp三系统的痛苦经历
- Java String StringBuffer StringBuilder