KMP算法
2016-07-30 10:50
246 查看
KMP算法
以上就是kmp代码的具体实现,kmp能在O(n+m)(n是母串的长度,m是字串的长度)的时间复杂度里实现字符串匹配。
#include<stdio.h> #include<stdlib.h> #include<string.h> int n,m; int next[1010]; char s[10100],t[101]; void ne(char< 4000 /span> s[]){ for(int i=1;i<=m;i++){ int j=next[i-1]; while(j>0 && s[j+1]!=s[i])j=next[j]; if(t[j+1]==t[i])next[i]=j+1; else next[i]=0; } }// next数组用来存储当前字符的前缀的最长相等前缀后缀的长度,不能重叠 void work(char s[],char t[]){ int l=0,i,j,k,n,m; for(i=0;i<strlen(s);i++){ if(s[i]!=t[l]){ l=0;i+=next[i];continue;//不断跳到当前点的next数组上 } l++; if(l==strlen(t)){printf("%d\n",i-l+2);return;}//到达目标就退出 } } int main(){ int i,j,k; gets(s);n=strlen(s); gets(t);m=strlen(t); work(s,t);//主工作函数 return 0; }
以上就是kmp代码的具体实现,kmp能在O(n+m)(n是母串的长度,m是字串的长度)的时间复杂度里实现字符串匹配。
相关文章推荐
- PHP函数之日期时间函数date()详解
- 关于js日期对象二三事
- Logstash安装-源码
- Linux 文件权限管理 之 RWX
- mysql 通过bin-log恢复数据方法详解
- 反射+注解或去数据库查询语句
- 程序员的观察力
- PyGobject(四十二)布局容器之ButtonBox
- 网络游戏知识汇总
- linux 常用命令
- JDBC-Ststement/PreparedStatemnent/CallableStatement
- 偷笑偷笑偷笑这就是有病的表现
- CR95HF操作命令介绍
- G - Fire![bfs]
- popwindows
- Catch That Cow
- HDU-2012-素数判定【打表】
- achartengine图标框架的使用心得
- 将博客搬至CSDN
- 论 <%@taglib prefix="s" uri="/struts-tags" %> 的重要性