KMP字符串匹配算法
来源:互联网 发布:淘宝客户管理软件 编辑:程序博客网 时间:2024/06/05 04:18
#include<stdio.h>/* P为模式串,下标从0开始 */void GetNext(char *P, int p_len, int next[]){ int i = 0; //P的下标 int j = -1; next[0] = -1; while (i < p_len) { if (j == -1 || P[i] == P[j]) { i++; j++; if (P[i] != P[j]) //和上面的判断,i值已经发生变化(关键) next[i] = j; else next[i] = next[j]; //既然相同就继续往前找前缀 } else j = next[j]; }}/* 在S中找到P第一次出现的位置 *///// S;长字符串// P:短字符串/*******************************/int KMP(char *S, char *P){int next[30] = { 0 }; int i = 0; //S的下标 int j = 0; //P的下标 int s_len = strlen(S); int p_len = strlen(P); GetNext(P,p_len ,next); while (i < s_len && j < p_len) { if (j == -1 || S[i] == P[j]) //P的第一个字符不匹配或S[i] == P[j] { i++; j++; } else j = next[j]; //当前字符匹配失败,进行跳转 } if (j == p_len) //匹配成功 return 1;//i - j; return 0; //-1}int main(){ if(KMP("5252525112312323543453", "12312323"))printf("kmp is ok\n");else printf("kmp is fail\n"); return 0;}
转载:http://www.61mon.com/index.php/archives/183/
阅读全文
0 0
- KMP 字符串匹配算法
- kmp字符串匹配算法
- kmp字符串匹配算法
- KMP字符串匹配算法
- 字符串匹配算法-kmp
- KMP(字符串匹配)算法
- KMP 字符串匹配算法
- 字符串匹配算法:KMP
- KMP算法 字符串匹配
- 字符串匹配 KMP 算法
- KMP字符串匹配算法
- KMP字符串匹配算法
- KMP算法:字符串匹配
- KMP字符串匹配算法
- 字符串匹配--KMP算法
- KMP字符串匹配算法
- KMP字符串匹配算法
- KMP字符串匹配算法
- hadoop--mapreduce排序
- Redis.Note1
- Qt 打包软件 -- 轻松解决缺少各种库问题
- 动态规划-矩阵链乘法
- Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
- KMP字符串匹配算法
- javascript中BOM部分基础知识总结
- PXE网络装系统(PXE+DHCP+TFTP+FTP)
- gdb调试多线程
- PCL1.8使用可视化类,vtk报错Error setting 'tcoordMC' in shader VAO.
- JVM线程引擎和内存共享区的交互及程序计数器
- 算法系列——Two Sum
- hdu 2136
- Mysql.Note2