• 串的模式匹配:指的是子串的定位
  • 主串: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函数:
  • 【Mark】KMP算法

相关文章:

  • 2021-11-28
猜你喜欢
  • 2021-07-26
  • 2021-11-21
  • 2021-12-02
  • 2022-01-16
  • 2021-05-12
  • 2021-05-05
相关资源
相似解决方案