串的模式匹配BF算法C/C++代码实现

本文介绍了串的BF算法,该算法是一种简单的模式匹配方法,通过逐一匹配和回溯来寻找子串。文章提供了C/C++代码实现,并展示了运行结果。
摘要由CSDN通过智能技术生成

串:

串是一种内容受限的线性表。
与线性表基本操作不同的是,串是以“串的整体”作为操作对象的。

考虑到存储效率和算法的方便性, 串多采用顺序存储结构。

BF算法:

算法思想简明,从始位置开始逐一匹配,匹配成功继续下一个,若失败则回溯:
主串的指针i总是回溯到 i-j+2 位置,
模式串的指针总是恢复到首字符位置 j= 1
在这里插入图片描述

代码如下:

( 为了方便说明问题,算法描述当中所用到的顺序存储的字符串都是从下标为1的数组分量开始存储的, 下标为0的分量闲置不用)

#include<stdio.h>

#define MAXLEN 255

//串的顺序存储
typedef struct
{
   
	char ch[MAXLEN + 1];	//0号不用,从1开始
	int length;				//串的当前长度
}SString;

//BF算法
//返回模式T在主串s中第pos个字符开始第一次出现的位置。若不存在, 则返回值为0 
int Index_BF(SString S, SString T, int pos)
{
   
	int i = pos;	//主串起始位置
	int j = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值