KMP算法
来源:互联网 发布:js微信通讯录字母索引 编辑:程序博客网 时间:2024/06/07 19:19
int func_equal(const char* p, int n, int k){ int i = 0; // 0 ~ k-1 int j = n-k; // n-k ~ n-1 while ( i <= k-1 ) { if ( p[i] != p[j] ) { return -1; } i++; j++; } return 0;}void func_get_next(const char* p, int* next){ if ( strlen(p) == 0 ) return; next[0] = -1; if ( strlen(p) == 1 ) return; next[1] = 0; if ( strlen(p) == 2 ) return; int k = 0; for ( int n = 2; n < (int)strlen(p); ++n ) { k = n-1; while ( k > 0 ) { if ( 0 == func_equal(p, n, k) ) { next[n] = k; break; } k--; } if ( k <= 0 ) { next[n] = 0; } }}int func_string_match(const char* s, const char* p){ unsigned int i = 0; unsigned int j = 0; int* next = new int[strlen(p)]; func_get_next(p, next); while ( i < strlen(s) ) { while ( s[i] == p[j] ) { i++; j++; if ( j == strlen(p) ) { delete[] next; return (i - strlen(p)); } } j = next[j]; if ( -1 == (int)j ) { i++; j = 0; } } delete[] next; return -1;}
0 0
- KMP算法详解 【KMP】
- 【KMP】KMP算法模板
- KMP hihoCoder1015 KMP算法
- kmp算法
- KMP算法
- KMP算法
- KMP算法
- KMP算法
- KMP 算法
- kmp算法
- KMP算法
- kmp算法
- KMP算法
- KMP算法
- kmp算法
- kmp算法
- KMP算法
- KMP算法
- 关于dijkstra+heap的实现
- POJ 3468 伸展树建树
- 重温线性代数(2)——向量空间
- 如何实现函数执行完,但是结果不被系统回收?
- oracle字符串聚合
- KMP算法
- iOS学习笔记—— UItableView 控件的简单使用
- 如何使用cntlm配置代理上网
- 言诟杭铣戏思思檀杭陡盖
- FPGA综合编码
- Hough变换直线检测
- java version : 找出数组中两个只出现一次的数字
- HDU 4870 Rating (概率+高斯消元)
- hibernate学习之——many-to-many(双向多对多关系)