BM算法图解

BM算法的概念:

BM算法也叫做精确字符集算法,它是一种从右往左比较(后往前),同时也应用到了两种规则坏字符、好后缀规则去计算我们移动的偏移量的算法。

1、坏字符规则

基本思路图解:
首先:提供两个字符串分别是文本串、模式串
在这里插入图片描述

因为是从右往左开始比较、为什么呢?因为这样的话如果最后一个比较不上前面的一定就可以不用比较了。
这时:c、d不匹配。所以文本串中的d是坏字符。

这时利用公式计算出**后移位数。****

 后移位数 = 坏字符的位置 - 模式串中的上一次出现位置

所以计算结果是:
6=5-(-1);
因为按数组下标计算,而且模式串中没有该坏字符,所以是(-1)。

在这里插入图片描述
接下来继续比较:
c、b不匹配,坏字符是b,发现模式串中有两个坏字符。
这时选择从右往左第一个出现的,因为如果选择后面的话就容易会造成被有遗漏问题。
结果:

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值