数据结构——KMP算法、BF算法

本文介绍了两种字符串匹配算法:BF算法和KMP算法。BF算法在最坏情况下的时间复杂度为O(Plen*Tlen),而KMP算法通过next数组避免回溯,达到O(Plen+Tlen)的时间复杂度,空间复杂度为O(Plen)。KMP算法的关键在于next数组的计算,用于确定模式串在不匹配时的滑动距离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BF算法:

BF算法的实现思想:我们可以定义两个索引值i和j,分别指示主串str和子串sub当前正待比较的字符位置,从主串str的第pos个字符起和子串sub的第一个字符比较,若相等,则i++,j++,否则从主串str回到上次匹配开始的下一个位置即i-j+1,子串回到0号位置,重复执行,直到子串sub中的每个字符依次和主串str中的一个连续字符串相等,则匹配成功,函数返回该连续字符串的第一个字符在主串str中的位置,否则匹配不成功,函数返回-1

代码实现:

int BF(const char *str,const char *sub,int pos)//pos为主串位置
{
	assert(str != NULL&& sub!=NULL);
	int i = pos;
	int j = 0;
	int lens = strlen(str);
	int lensub = strlen(sub);
	while (j <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值