串的定义及BF算法

定义

BF算法——朴素查找算法——也叫做串的模式匹配算法

其应用特别多,比如经常在一篇文章里面搜索一些东西,(比如文章里的某个内容,或某些关键字词出现的位置,次数等)

之前我们大多数情况下是用来搜索关键字,而Search函数只是用来搜索一个字符,比如下面push关键字的开头p,但search搜索不了整个关键字push

这种搜索整个关键字也就是搜索一串字符,就叫做——串的模式匹配

主串:相当于一篇文章

子串:就相当于这篇文章中的某个关键字

串的模式匹配算法:相当于在主串中查找看子串存不存在

搜索查找就是挨个字符对比匹配的过程

主串的下标i,和子串的下标j,然后将i位置的字符和j位置的字符进行对比,2个都一样就一块往后走,比下一个

遇到不一样的了

不一样了就要退回去重新了,j回去

现在2个一样,然后i和j同时往后走

按照这种方式一种走,直到j走完了,j走到空了,就认为匹配成功了

但上面这种算法是不对的,因为i也必须要退回去,即i必须回退

因为这种算法就不符合下图这种

每次不匹配时,i回退到上次开始的位置的下一个;而j都毋庸置疑的退回从头开始

因为如果i不回退,那就只找了主串中以第一个字符开头的子串,第二个到第n个字符开头的子串都没找,漏掉了怎么能说没找到

i必须回退的,就叫BF算法,也就朴素查找算法

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

在主串中的pos(任意)位置开始查找,(不一定从0号位置开始,即不一定在全文中开始找),找到返回下标,没找到返回-1

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值