《数据结构和算法》之字符串BF算法

本文介绍了字符串的基本概念,包括定义、子串与主串的比较,以及字符串的顺序存储和链式存储结构。重点讲解了BF算法(Brute Force),这是一种朴素的模式匹配方法,通过逐字符比较实现主串S和子串T的匹配,时间复杂度为O(M*N)。以S="IloveFishC.com"和T="FishC"为例,展示了BF算法的步骤和工作原理。
摘要由CSDN通过智能技术生成

一,定义:

        串是由零个或者多个字符组成的有限序列,又名字符串。一般记为 s=“a1a2a3a4......an”(n>0),串可以是空串,即没有字符,直接由 “”表示,或者可以由希腊字母来表示。

        子串和主串,例如“china”是“chinaboy”的子串,反之则倒过来。字符串比较大小要怎么比较呢,这个时候比的就是字符串里每个字符的ASCII码的大小,因为‘F’==70,‘f’==102,'f'>'F'。

二,字符串的存储结构

      字符串的存储结果与线性表一样,分为顺序存储和链式存储。字符串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的。按照预定义的大小,为每个定义的字符串变量分配一个固定长度的存储区,一般用定长数组来定义。与线性表类似,既然是固定长度的存储区,就存在一个空间分配不灵活的问题,那么会考虑用链式存储结构。不同的字符串我们一般都是连在一起表述的,所以习惯上我们通常还是会直接定义一个足够长的存储区来存储的。

三,BF算法

       Brute Force算法,属于朴素的模式匹配算法。核心算法是:有两个字符串S和T,长度为N和M,首先S[1]和T[1]比较,若相等,则再比较S[2]和T[2],一直到T[M]为止,若S[1]和T[1]不等,则T向右移动一个字符的位置,再依次进行比较。该算法最坏情况下要进行M*(N-M+1)次比较,时间复杂度为O(M*N)。在这里S是主串,T是子串,这种子串的定位操作通常称为串的模式匹配。假设我们要从

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值