ITKeyword,专注技术干货聚合推荐

注册 | 登录

数据结构 KMP算法代码

u010893129 分享于 2014-03-28

推荐:数据结构之排序算法代码

#include "stdafx.h"// 打印数组void PrintList(int* list, int len) { int len_ = len - 1; for(int i=0; i<len_; i++) { printf("%d < ", list[i]); }

2020腾讯云共同战“疫”,助力复工(优惠前所未有!4核8G,5M带宽 1684元/3年),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1053

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

//匹配字符串模式值 
void getFail(char P[],int f[])
{
int m=strlen(P);
f[0]=0;
f[1]=0;
for(int i=1;i<m;i++)
{
int j=f[i];
while(j&&P[i]!=P[j])
 j=f[j];
f[i+1] =P[i]==P[j] ? j+1:0;
}
}




//比较匹配算法 
int find(char T[],char P[],int f[])
{
int n=strlen(T),m=strlen(P);
getFail(P,f);
int j=0,count=0;
for(int i=0;i<n;i++)
{
while(j&&P[j]!=T[i]) 
 j=f[j];
if(P[j]==T[i])
 j++;
if(j==m) 
 //printf("%d\n",i-m+1);
 count++;
}
return count;
}

推荐:【数据结构与算法】字符串匹配KMP算法

首先需要了解一下BF暴力匹配算法,这个算法为每一个串设置一个指针,然后两个指针同时后移,出现不匹配的情况后,主串指针回到开始后移之前的位置的下一位,模式

//匹配字符串模式值  void getFail(char P[],int f[]) { int m=strlen(P); f[0]=0; f[1]=0; for(int i=1;i<m;i++) { int j=f[i]; while(j&&P[i]!=P[j])  j=f[j]; f[i+1] =P[i]==P[j] j+1:0; }

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。