数据结构---模式匹配算法

  • ⼀、模式匹配的概念
    模式匹配是数据结构中字符串的⼀种基本运算,给定⼀个⼦串,要求在某个字符串中找出该字串相同的所有⼦串,这就是模式匹配。其中原
    字符串成为⽬标串,给定的⼦串为模式串。
  • ⼆、常⽤的模式匹配算法 1、朴素的模式匹配算法(也称简单匹配算法,Brute-Force简称BF算法) A.算法思想:
    核⼼是穷举法。从⽬标串的的第⼀个字符起与模式串的第⼀个字符⽐较,若相等,则继续对字符进⾏后续的⽐较,否则⽬标串从第⼆个字符
    起与模式串的第⼀个字符重新⽐较,直⾄模式串中的每个字符依次和⽬标串中的⼀个连续的字符序列相等为⽌,此时称为匹配成功,否则匹 配失败。
  • 2、KMP匹配算法
    Knuth-Morris-Pratt算法(简称KMP),是由D.E.Knuth、J.H.Morris和V.R.Pratt共同提出的⼀个改进算法,消除了朴素的模式匹配算法
    中回溯问题,完成串的模式匹配。
    A.算法思想:
  • 设⽬标串为s,模式串为t, i、j 分别为指⽰s和t的指针,i、j的初值均为0。 若有 si =
    tj,则i和j分别增1;否则,i不变,j退回⾄j=next[j]的位置 (
    也可理解为串s不动,模式串t向右移动到si与tnext[j]对齐 ); ⽐较si和tj。若相等则指针各增1;否则 j
    再退回到下⼀个j=next[j]的位置(即模式串继续向右移动 ),再⽐较 si和tj。

依次类推,直到下列两种情况之⼀:

  • 1)j退回到某个j=next[j]时有 si = tj,则指针各增1,继续匹配;
  • 2)j退回⾄ j=-1,此时令指针各增l,即下⼀次⽐较 si+1和 t0
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值