KMP算法
来源:互联网 发布:数据分析网站 编辑:程序博客网 时间:2024/06/18 17:18
#include <iostream>using namespace std;void GetNext(char* p,int next[]) { int pLen = strlen(p); next[0] = -1; int k = -1; int j = 0; while (j < pLen - 1) { //p[k]表示前缀,p[j]表示后缀 if (k == -1 || p[j] == p[k]) { ++k; ++j; next[j] = k; } else { k = next[k]; } } } int KmpSearch(char* s, char* p,int next[]) { int i = 0; int j = 0; int sLen = strlen(s); int pLen = strlen(p); while (i < sLen && j < pLen) { //①如果j = -1,或者当前字符匹配成功(即S[i] == P[j]),都令i++,j++ if (j == -1 || s[i] == p[j]) { i++; j++; } else { //②如果j != -1,且当前字符匹配失败(即S[i] != P[j]),则令 i 不变,j = next[j] //next[j]即为j所对应的next值 j = next[j]; } } if (j == pLen) return i - j; else return -1; } int main(int argc, char* argv[]){char pat[]="kaka";char str[]="iamkaka";int next[7];GetNext(pat,next) ;cout<< KmpSearch(str, pat,next) ; 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算法
- Python学习系列(七)( 数据库编程)
- 链栈的一些操作
- 数字图解签名
- php-cookie和session-1217
- [我是面试官系列]关于沟通
- KMP算法
- ORACLE中创建和删除临时表
- 谈一谈Xamarin
- 【嵌入式Linux+ARM】GPIO操作
- 运算符重载实例:可变长整型数组
- Dalvik vm 与 Jvm 比较
- ContentProvider共享数据原理分析
- samba系列问题之分析解决过程
- 高通平台分析