c语言相关性匹配_字符串匹配算法--暴力匹配(Brute-Force-Match)C语言实现

一、前言

暴力匹配(Brute-Force-Match)是字符串匹配算法里最基础的算法,虽然效率比较低,但胜在方便理解,在小规模数据或对时间无严格要求的情况下可以考虑。

二、代码

#include

#include

int bf(char *l,char *s);

int main(void)

{

char s1[201],s2[201]; //根据需要设定数组大小

printf("母串:");

scanf("%s",s1);

printf("子串:");

scanf("%s",s2);

int a=strlen(s1),b=strlen(s2),re=0;

if(a>=b) //母串长度要比子串长

{

re=bf(s1,s2);

if(re==1)

printf("%s是%s的子串",s2,s1);

return 0;

}

else

printf("无法匹配");

return 0;

}

int bf(char *l,char *s)

{

if(!strcmp(l,s)) //如果两个字符串相同直接返回

return 1;

int ll=strlen(l),sl=strlen(s),di=ll-sl;

for(int i=0;i<=di;i++)

{

int temp=0;

for(int j=0;j

{

if(l[i+j]==s[j])

continue;

else

{

temp=1;

break;

}

}

if(temp==1)

continue;

else if(temp==0)

return 1;

}

printf("子串不存在");

return 0;

}

三、主要思路

每次从子串与母串的第一个字符开始比较,若是匹配成功则继续下一个字符的匹配;若是匹配失败则从母串的下一个字符开始与子串的第一个字符重新匹配,循环往复直到匹配成功或者匹配失败。

四、分析时间复杂度

我们设子串长为m,母串长为n,同时m比n小的多。

在最好情况下,子串与母串的失配都是发生在第一个字符处,时间复杂度为O(m+n)。

在最坏的情况下,即子串每一次与母串失配都是在最后一个字母时,时间复杂度为O((m*n)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值