字符串:模式匹配法

27 篇文章 4 订阅

字符串:BF算法

话不多少,先上代码

int getchars(char arr[],char brr[]);
int main() //程序入口,主函数,从这里开始执行
{
	char arr[]="asdasdase";//主串赋值 
	char brr[]="ase";//子串赋值 
	int result = getchars(arr,brr);//定义一个接收调用函数
	if(result==-1)
	{
		printf("匹配失败\n");	
	} 
	else
	{
		printf("匹配成功,在第%d个位置",result);
	}
}
int getchars(char arr[],char brr[])
{
	int i=0;//主串下标 
	int j=0;//子串下标 
	while(i<strlen(arr)&&j<strlen(brr))//下标长度小于字符串长度 
	{
		if(arr[i]==brr[j])
		{
			i++;//主串下标++ 
			j++;//子串下标++ 
		}
		else
		{
			i=i-j+1;//主串下标回退 
			j=0;//子串重新归0 
		}
	}
	if(j==strlen(brr))//如果子串下标==子串长度(证明子串已经匹配成功) 
	{
		return i-j+1;//匹配成功返回成功的位置 
	}
	else
	{
		return -1;//匹配失败 返回-1 
	}
}

解题思路

模式匹配法解题思路(又名暴力解法)
		1.定义下标赋值为0
		2.while循环小标小于字符数组长度
		3.如果两数相等,则字符下标相加 不相等则主串下标为i=i-j+1  j=0
  • 小提示:虽然使用BF算法能够实现匹配功能,但效率太低了,时间复杂度为O(n*m),感兴趣的小伙伴可以去看一下KMP算法

KMP算法链接:https://baijiahao.baidu.com/s?id=1659735837100760934&wfr=spider&for=pc

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值