kmp算法实现模式匹配C语言,C语言kmp算法简单示例和实现原理探究

以前看过kmp算法,当时接触后总感觉好深奥啊,抱着数据结构的数啃了一中午,最终才大致看懂,后来提起kmp也只剩下“奥,它是做模式匹配的”这点干货。最近有空,翻出来算法导论看看,原来就是这么简单(下不说程序实现,思想很简单)。

模式匹配的经典应用:从一个字符串中找到模式字串的位置。如“abcdef”中“cde”出现在原串第三个位置。从基础看起

朴素的模式匹配算法

A:abcdefg  B:cde

首先B从A的第一位开始比较,B++==A++,如果全部成立,返回即可;如果不成立,跳出,从A的第二位开始比较,以此类推。

代码如下:

/*

*侯凯,2014-9-16

*功能:模式匹配

*/

#include

#include

using namespace std;

int index(char *a,char *b)

{

int tarindex = 0;

while(a[tarindex]!='')

{

int tarlen = tarindex;

int patlen;

for(patlen=0;b[patlen]!='';patlen++)

{

if(a[tarlen++]!=b[patlen])

{

break;

}

}

if(b[patlen]=='')

{

return tarindex;

}

tarindex++;

}

return -1;

}

int main()

{

char *a = "abcdef";

char *b = "cdf";

cout

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值