学字符串匹配算法BM算法有感

讲在前面,本篇不是具体介绍BM算法的理论原理和代码实现的,只是本人在学习BM算法后对于BM算法判断字符串匹配过程的一些总结,希望带给小伙伴一些思想感悟,自己做好学习沉淀!!!嘻嘻

字符串匹配算法之 BM 算法:

BM 算法包含两个部分,分别是坏字符规则好后缀规则

  • 坏字符规则:模式串与主串从后向前比较,遇到不匹配的字符时,查看主串中的这个字符(坏字符)在模式串中是否存在
    • 如果存在(如果存在多个,取靠后的一个),将模式串的存在的这个字符与主串中的这个字符移动到对齐。

举例:

    • 如果不存在,将模式串的第一个字符直接移动到主串的这个字符后面,继续从后向前找坏字符

举例:

  • 好后缀规则:模式串与主串从后向前比较,遇到不匹配的字符时,后面已经匹配的字符串被称为好后缀,以好后缀为整体,查看模式串中是否存在于好后缀相同的子串
    • 如果存在,将模式串中与好后缀相同的子串移动到与主串中的好后缀对齐的位置,继续从后向前比较。

举例:

    • 如果不存在,还需要判断好后缀中是否与模式串存在公共前后缀,如果存在,则将模式串中的前缀部分移动到与好后缀中的后缀部分对齐。否则,直接将模式串的第一个字符移动到好后缀的下一个字符对齐。

举例:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值