串匹配算法.BF算法

串的模式匹配算法 – BF算法详解 文章目录一、BF算法原理设计思想:二、时间复杂度三、C++实现代码 一、BF算法原理 BF算法是一种蛮力算法,其实现过程没有任何技巧,就是简单粗暴地拿一个串同另一个串中的字符一一比对,得到最终结果。 算法目的:确定主串中所含子串第一次出现的位置,这里的子串也称为模式串。 设计思想: (1)主串和模式串逐个字符进行比较 (2)当出现字符不匹配(失配)时,主串的比较位置重置为起始位置的... 阅读详情

在这里插入图片描述
#include<stdio.h>
#include<string.h>
//BF算法的时间复杂度:O(n*m)
int BF(char *s,char *p,int pos)
{
if(s == NULL&&p == NULL)
{
return -1;
}

int lens = strlen(s);
int lenp = strlen(p);

if(lens < lenp)
{
    return -1;
}

int i = pos;
int j = 0;

while(i < lens && j < lenp)
{
    if(s[i]==p[j])
    {
        i++;
        j++;
    }
    else//失配,从初始比较位置的下一个开始重新比较
    {
        i = i-j+1;
        j = 0;
    }
}

//两种退出方式,判断是哪一种
if(j >= lenp)
{
return i-j;
}
return -1;
}

int main()
{
char *s = “ababcabcdababcde”;
char *p = “abcd”;

printf("起始位置: %d\n",BF(s,p,0));

return 0;

}

串—BF算法(简单匹配算法) 串的模式匹配: 查找模式串 t 是不是目标串 s 的子串,如果模式匹配成功(在目标串s中找到一个模式串t),t 是s 的字串,返回 t 在 s 中的位置;如果模式匹配不成功,t 不是 s 的子串, 返回 -1. 方法: BF算法,也称为简单匹配算法。 采用穷举的思路。从s的每一个字符开始依次与t的字符进行匹配。 基本思路: 1、从目标串s = "s0 s1…s n-1"的第一个字符开始和模式串t ... 阅读详情

相关推荐

串匹配——bf、kmp、bm算法

问题描述:给定一个文本,在该文本中查找并定位任意给定字符串:给定两个串和,在主串S中查找子串T的过程,T为模式。 1、bf算法 蛮力法 对主串与模式串一个一个进行比较,若不匹配,则模式串从第一个字符开始,主串往后一个字符,再进行下一趟比较;若匹配,则模式串与主串字符往后进行比较。 直到主串s所剩字符长度小于模式串t长度或模式串所有字符比较完毕。 #include<stdio.h&...

yisandezhuiqiu的博客 2359

串的模式匹配(BF算法和KMP算法)

BF算法和KMP算法

weixin_43290957的博客 2743

数据结构(C语言)串的模式匹配BF算法

BF算法 BF(Brute Force)算法又称暴力算法,是一种普通的模式匹配算法,其思想是:从主串第一个字符开始,取子串长度个字符,这些字符分别与子串进行比较,若某位字符不相等,则在主串起始字符向后推移一格与子串再进行比较,直至在主串遍历出与子串相等的字符串。 ...

AtomQQ_2022313691的博客 2115

串的模式匹配算法之BF算法

与线性表相似,串也有两种基本存储结构,顺序存储和链式存储。但考虑到存储效率和算法的方便性,串多采用顺序存储结构。 1、串的顺序存储 1)串的定长顺序存储结构 类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列按照预定义的大小,为每个定义的串变量分配一个固定长度的存储区。合理 这种定义方式是静态的,在编译时刻就确定了串空间的大小。而大多数情况下,串的操作是以串的整体形式参与的,串变量之间的长度相差较大,在操作中串值长度的变化也较大,这样为串变量设定固定大小的空间不尽合理。因此最好是根据实际

weixin_47700137的博客 4703

【串的模式匹配01】详细介绍串的模式匹配算法之BF算法

串的模式的匹配是指:给定一个字符串match,以及一个字符串pattern,其中match字符串称作:【匹配串】,pattern字符串称作:【模式串】,在字符串match中判断是否存在pattern字符串的过程,叫做串的模式匹配。【BF算法】和【KMP算法】。其中【BF算法】就是暴力破解算法,而【KMP算法】则是对【BF算法】的优化版本,这篇文章主要介绍【BF算法】,通过对BF算法的学习,研究一下它的算法缺点,然后下一篇文章再深入学习KMP算法。

✅ Java 开发工程师 678

BF算法--串的朴素模式匹配算法

BF算法--串的朴素模式匹配算法,比较实用的方法

数据结构——串的模式匹配算法(BF算法和KMP算法)

确定主串中所含子串(模式串)第一次出现的位置(定位)搜索引擎、拼写检查、语言翻译、数据压缩BF算法(Brute-Force,又称古典的、经典的、朴素的、穷举的)又称暴力破解法KMP算法(特点:速度快)

weixin_74209413的博客 2501

串匹配BF算法C语言版

最简单的串匹配算法,主串和模式串相比较,若相等,继续逐个后续字符,否则从主串的一下个字符起再重新和模式的字符比较之.

串的模式匹配算法(KMP算法,BF算法+算法详解+实现代码)

串的模式匹配算法(KMP算法,BF算法+算法详解+实现代码) 子串的定位操作是找子串在主串中从第pos个字符后首次出现的位置,又被称为串的模式匹配 一、BF模式匹配算法 BF算法思想:Brute-Force算法又称蛮力匹配算法(简称BF算法),从主串S的第pos个字符开始,和模式串T的第一个字符进行比较,若相等,则继续比较后续字符;否则回溯到主串S的第pos+1个字符开始重新和模式串T进行比较。以此类推,直至模式串T中的每一个字符依次和主串S中的一个连续的字符序列相等,则称模式匹配成功,此时返回模式串T

冲出仁川,走出马德里,故事还会再继续 2万+

串的基本操作

为字符串分配一个固定长度的存储空间,完成相关字符串的基本操作:字符串连接,字符串比较,取字符串长度,删除子串,字符串替换,定位子串及取子串操作(这些操作用函数来实现)。并演示相关操作。

手把手教你调试RTL8201F:从芯片手册解读到LWIP驱动移植

本文详细解析了RTL8201F PHY芯片的开发流程,从寄存器配置到LWIP驱动移植,重点介绍了RMII模式下的特殊配置要点和调试技巧。通过实战案例和高级调试方法,帮助工程师解决网络性能问题,实现与FreeRTOS+LWIP协议栈的稳定集成。

ik678901234的博客 972

串的模式匹配(BF算法)

【问题描述】 串的模式匹配算法BF的实现与应用。 【输入形式】 第一行输入主串s; 第二行输入模式串t; 输入串中均不包含空格字符。 【输出形式】 模式串在主串s中的出现的每一个位置序号。若一次都未匹配到,则输出0。 【样例输入1】 ababcabcacbab ab 【样例输出1】 1 3 6 12 【样例输入2】 111113455113232342432432 11 【样例输出2】 1 2 3 4 10 【样例输入3】 fasdfdsfsadfdsdsagetgrd

w_nxsxs的博客 1万+

LabVIEW多设备采集实战:1个程序同时控制3个RS485 Modbus仪表

本文详细介绍了如何使用LabVIEW实现多设备RS485 Modbus同步采集,涵盖硬件架构设计、多线程通信框架搭建、数据帧解析技巧及性能优化策略。通过实际项目案例,展示如何解决端口冲突、数据解析错误等工业自动化常见问题,提升采集系统实时性与可靠性。

qsc901234的博客 306

串的模式匹配算法--BF算法和KMP算法

设有两个字符串S和T,设S为主串,也称正文串;设T为子串,也称为模式。在主串S中查找与模式T相匹配的子串,如果匹配成功,确定相匹配的子串中的第一个字符在主串S中出现的位置。

weixin_50207593的博客 1808

YOLOv5s模型训练全流程解析:从数据准备到实战检测

本文详细解析了YOLOv5s模型训练的全流程,涵盖从环境搭建、数据准备与格式转换,到模型训练、参数调优及实战检测的完整步骤。文章提供了具体的代码示例和常见问题解决方案,旨在帮助开发者,特别是新手,高效掌握YOLOv5s模型训练的核心技术,并成功应用于实际检测任务中。

weixin_29041767的博客 334

Ubuntu24.04下Librenms的完整安装与配置指南

本文提供了在Ubuntu 24.04 LTS系统上完整安装与配置LibreNMS网络监控系统的详细指南。内容涵盖系统环境准备、依赖安装、源码获取、PHP/数据库/Nginx配置、Composer安装、网页向导设置以及设备添加与日常使用,帮助用户快速部署一套功能强大的开源网络监控解决方案。

tgb3456789的博客 1140

BF算法—串的模式匹配算法

子串的定位运算通常称为串的模式匹配或串匹配。 串的模式匹配设有两个字符串S和T,设S为主串,也称正文串;设T为子串,也称模式。在主串S中查找与模式T相匹配的子串,如果匹配成功,确定相匹配的子串中的第一个字符在主串S中出现的位置。 著名的模式匹配算法有BF算法和KMP算法,下面介绍BF算法。 模式匹配不一定是从主串的第一个位置开始,可以指定主串中查找的起始位置pos。如果采用字符串顺序存储结构...

wmy0217_的博客 4398

手把手教你用Qt和QScada框架,从零搭建一个简易的工业组态监控界面

本文详细介绍了如何使用Qt和QScada框架从零搭建工业组态监控界面,涵盖环境配置、界面设计、动态数据绑定及高级功能实现。通过实战案例演示,帮助开发者快速掌握SCADA系统开发技巧,提升工业自动化项目的开发效率。

weixin_32932149的博客 340

串(串的模式匹配算法BF算法)

文章目录串串的定义串的存储结构串的顺序存储串的链式存储结构串的模式匹配算法——BF算法 串 串的定义 串的逻辑结构和线性表极为相似,区别仅在于串的数据对象约束为字符集。然而,串的基本操作和线性表有很大差别。在线性表的基本操作中,大多以单个元素作为操作对象,列入,在线性表中查找某个元素,求取某个元素,在某个位置上插入一个元素或删除一个元素等;而在串的基本操作中,通常以串的整体作为操作对象,例如,在串...

qq_45918426的博客 1848

STM32F103用软件I2C读取IP2366电量数据,实测避坑指南(附完整源码)

本文详细介绍了如何使用STM32F103的软件I2C驱动读取IP2366电池管理芯片的电量数据,包括GPIO初始化、I2C时序实现、关键延时优化及常见问题解决方案。通过实测避坑指南和完整源码,帮助开发者快速实现稳定的电量数据读取,适用于嵌入式电池管理系统开发。

weixin_33725722的博客 515

Unity 数字孪生笔记1 工具介绍

前言 工欲善其事必先利其器 流程思考 数字孪生本质上一种基于实际物理数据的可视化方案,通过对接实际数据,在三维界面中展示孪生结果。 那么这个流程就很简单了。 整个流程分为三块:数据来源-》数据分析-》数据展示 输入数据 首先我们需要考虑我们能拿到什么。第一,实际物体的三维数据从哪里来,第二,实际数据怎么获取到。 模型数据 工业上常常会用到CAD模型,CAD模型具有精确、统一的特点,但是CAD不是三角面片,我们不能直接导出到Unity中,而且导入之后有很多不合理的地方,例如面片杂乱、面数过高等问题。针对这个

Thissky的专栏 1万+

串的BF模式匹配算法

BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配, 若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符 依次比较下去,直到得出最后的匹配结果 如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符; 如果失配(即S[i]! = P[j]),令i = i - (j - ...

weixin_33950757的博客 1715

通讯软件002——快速使用modscan进行modbus调试

快速使用modscan进行modbus调试

zhouwl72的博客 1032

【数据结构】--串的匹配算法-BF算法

串(主串):一系列字符的有限集合。 子串:从串上拿到一部分字符构成的串叫做子串。 空串:不存在任何字符,是任意串的子串 串的匹配:用模式串在主串匹配 如图下所示,匹配成功,模式串在主串的位置指的是第一个字符对应的在主串的位置,也就是模式串在主串的第2个位置 串的匹配算法--朴素算法:群举,把每种情况都罗列进行匹配,直到匹配成功,也称BF算法 (1)用模式串和主串从第一个...

weixin_44915076的博客 549

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

串的模式匹配-BF算法

串的模式匹配经常需要用到,判断一个字符串是否是另外一个字符串的一部分。前者称为子串或模式,后者成为主串或正文串。先用最简单的BF算法实现串的模式匹配。算法思路:先从主串和子串第一个位置开始进行比较。如果相等,那么继续比较后面的字符,否则从主串失配的下一个元素开始和子串的第一个元素继续匹配。直到比较到主串最后位置,如果一直不匹配,则匹配失败,否则得到匹配的位置。最好情况时间复杂度:O(n+m) (假

Super小龙的博客 3634

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

串的BF匹配算法

串的SF匹配算法,算法核心思想是:首先S[1]和T[1]比较,若相等,则再比较S[2]和T[2],一直到T[M]为止;若S[1]和T[1]不等,则T向右移动一个字符的位置,再依次进行比较。如果存在k,1≤k≤N,且S[k+1…k+M]=T[1…M],则匹配成功;否则失败。该算法最坏情况下要进行M*(N-M+1)次比较,时间复杂度为O(M*N)。 // 串的匹配算法.cpp : 定义控制台应用程序

jiahaode的专栏 597

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 生产者和消费者
下一篇: 递归与循环,为什么老是写错?
恩嗯
博客等级 码龄8年 47粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值