【Mark】KMP算法

  • 串的模式匹配:指的是子串的定位
  • 主串:S 指针i
  • 模式串(子串):T 指针j

  • BF算法:S中从头开始一个一个匹配,失配后指针i回溯到开始匹配的下一位(从S中上次匹配开始的位置的下一位开始匹配)
  • 一般是O(n + m)
  • 最坏是O(n * m)

  • KMP算法:指针i不回溯
  • O(n + m)
  • 重点:部分匹配(已经匹配的串)
  • 失配后因为i不回溯,所以应该找模式串中第k个字符,下次匹配时ki对齐后开始匹配,相当于模式串向右滑动至ki对齐
  • k:看已经匹配的串中有没有 “ 子串 ” ,这个尾部的子串和头部的子串一一对应(即,相匹配),若有,则k为该串的下一位,k = 子串长 + 1
  • next函数:
  • 在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值