博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
KMP匹配算法的实现
阅读量:4588 次
发布时间:2019-06-09

本文共 865 字,大约阅读时间需要 2 分钟。

  KMP匹配算法是用于匹配字符串的经典算法,对KMP的详解或教程我就不写了,自认写不好。推荐两个自己认为不错的链接给想了解的朋友:

    1、介绍的很详细:

    2、看大多数教程都理解不了KMP的同学,看下这篇:

 

  贴上我的代码吧,C++实现。

 

#include 
using namespace std;//next生成函数void KMP_next(int *next,const char * t){ int i =0; int j =-1; next[0] =-1; const int tlen =strlen(t); while(i
=tlen) return (i-j); else return -1;}int main(){ char src[15] ="ababdababababe"; char t[6] ="ababe"; cout<
<

对于会的朋友来说,代码比较清晰了,很容易懂,对于还没理解的同学,可能仅看代码不容易看出头绪!可以看看别的详解之类的文章!

  这里需要提一点,就是在调试程序的过程(VS2010),delete []next 的时候总是崩溃,后来找到原因是访问next数组的时候越界了,但不明白的是越界访问怎么会影响到后来的delete操作,我的猜想是:在new int[MAX]时,分配的空间不止MAX个单位大小,会在其后增加些许信息,delete释放内存时,会使用这些信息。由于越界访问将这些“信息”擦除了,所以会导致delete的失败。

  不过对于这一猜想还需要继续验证,如果有朋友了解,望赐教! 当然,上面的程序已经将越界问题优化掉了!

  仅以此文记录学习路程及对自己的鼓励!

 

转载于:https://www.cnblogs.com/wangfugen/archive/2013/03/19/2970196.html

你可能感兴趣的文章
[beta cycle]daily scrum7_2.22
查看>>
BSD历史
查看>>
Climbing Stairs
查看>>
css遮罩层与fixed
查看>>
HTML5 Input 类型
查看>>
linux c语言 select函数用法 分类: arm-linux-...
查看>>
浏览网页出现右键查看源代码无效时
查看>>
动态生成的元素绑定KindEditor
查看>>
关于datatable的数据绑定问题
查看>>
c#函数中处理对象的问题
查看>>
转 top、postop、scrolltop、offsetTop、scrollHeight、offsetHeight、clientHeight
查看>>
2017-12-27练习
查看>>
NET设计规范(二) 命名规范
查看>>
VMware 9.0.1安装Mac OS X Mountain Lion 10.8.2
查看>>
SSL延迟
查看>>
android新手关于左右滑动的问题,布局把<android.support.v4.view.ViewPager/><ImageView/> 放在上面就不行了。...
查看>>
python第二十一天---昨天没写完作业
查看>>
爬虫基础--IO多路复用单线程异步非阻塞
查看>>
Johnny Solving CodeForces - 1103C (构造,图论)
查看>>
oracle数据库自学笔记(持续更新中……)
查看>>