介绍一种高效的KMP算法:代码可以直接运行

#include <iostream>
#include <iomanip>
using namespace std; void preKmp(char* s,int len,int* next)
{
int i=,j=-;
next[]=-; while(i<len)
{
while(j>- && s[i]!=s[j])
j=next[j];
i++;
j++; if(s[i]==s[j])
next[i]=next[j];
else
next[i]=j;
}
} int KMP(char*s,char* p)
{
int sn=strlen(s);
int sp=strlen(p); int* next=new int[sp];
preKmp(p,sp,next); int i=,j=;
while(i<sn)
{
while(j>- && s[i]!=p[j])
j=next[j];
i++;
j++; if(j>=sp)
{
return i-j;
}
}
return -;
} int main(int argc, char* argv[])
{
char* p="abcdabceabcde";
char* s="abcdabcdabceabcde";
int pos=KMP(s,p);
cout<<pos<<endl;
return ;
}

最新文章

  1. 第五次团队作业——第一次项目冲刺——Alpha版本
  2. PHP之session与cookie
  3. Servlet读取Excel标准化数据库过程记录
  4. qt QMetaObject::connectSlotsByName()自动关联失效问题解决
  5. vue.js(二)
  6. Ubuntu打开终端和设置root密码(转载)
  7. ubuntu12.10可用更新源
  8. C语言数据输入与输出
  9. Selenium2学习之-环境搭建
  10. Asp.Net Memcached安装配置使用、安全性
  11. 运行于64操作系统上的C#客户端通过WCF访问Oracle数据库不兼容问题
  12. 【引用】Linux 内核驱动--多点触摸接口
  13. 11g r2 模拟OCR和voting disk不可用,完整恢复过程,以及一些注意事项
  14. JavaScript模拟自由落体
  15. 深入浅出 JVM GC(1)
  16. java1.8 新特性(五 如何使用filter,limit ,skip ,distinct map flatmap ,collect 操作 java集合)
  17. iOS 给UIView添加xib
  18. 获取sevlet response值
  19. bootstrap世界探索2——万物的起源(网格系统)
  20. poj2253 Frogger(Floyd)

热门文章

  1. Noip2013心态调整
  2. Michael Kors成了时尚行业的公敌-股票频道-和讯网
  3. cpu亲和力总结taskset和setcpu及其他相关
  4. HDU1069:Monkey and Banana(DP+贪心)
  5. c++程序内存泄露检測工具
  6. 关于js封装框架类库之选择器引擎(一)
  7. HTTP学习笔记——URL与资源
  8. 两个textarea 同时变化高度
  9. mapreduce 关于小文件导致任务缓慢的问题
  10. Bandwidthd+Postgresql数据库配置笔记