字符串 [BF算法] --->字符串

<如果您对数据结构和算法感兴趣或者是iOS工作者,欢迎大家加入学习交流群:QQ529560119>

先来说一下“串”这样的数据结构:

定义:1.串(String是由零个或多个字符组成的有限序列,又名叫字符串)。2.一般记为s = “a1a2a3...an”(n>=0) 。3.串可以是空串,即没有字符,直接由“”表示(注意里面没有空格哦)。

子串和主串,例如“FishC”是“FinshC.com”的子串,反之则倒过来。

字符串的比较

字符串的比较跟传统的数字比较有点差别,很容易我们可以知道2比1大,可要是“FinshC“和”fishc.com“呢?要怎么比较?比较长短?比大小?

比大小!没错。比的就是字符串里每个字符的ASCII码大小,因为”F“==70 “f” == 102,“f”>F,所以“fishc.com”>"FishC"。

不过这样比较没什么意义,字符串的比较我们更重视是否相等。

字符串的存储结构

字符串的存储结构与线性表相同,也分顺序存储结构和链式存储结构。

字符串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的。

按照预定义的大小,为每个定义的字符串变量分配一个固定长度的存储区,一般用定长数组来定义。

与线性表相似,既然是固定长度的存储区,就存在一个空间分配不灵活的问题,那么会考虑用链式存储结构。


BF算法

BF算法原名Brute Force,BF算法属于朴素的模式匹配算法,它的核心思想是:

-有两个字符串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=“ILoveFishC.com”找到T=“FishC”这个子串的位置,按照BF算法,我们需要进行下边的步骤

如果相等 依次比较:

最后匹配到找到子串。其实BF算法还是很简单的,在iOS中,从一个字符串A中截图一段字符串B子串内部应该就是这种实现,只不过苹果帮我们封装好了具体的方法了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值