解决问题

    在已知“母串”(长度为n)中寻找“子串”(长度为m)。

    与在给定集合中寻找特定子集类似,但不同。

思路

  1. 暴力搜索(类似滑动匹配):思路简单,网上很多讲解,不赘述。时间复杂度为O(n * m)
  2. KMP模式匹配:充分利用“子串”特性,时间复杂度为O(n + m)

一句话概括

    发生匹配失败时,子串滑动至“已匹配成功串”的“最长公共后缀”位置。

算法解释

KMP算法理解

    在c处发生匹配失败,所以“已匹配成功串“为"beabe",最长公共前后缀为"be"

KMP算法理解

    子串“滑动”至“最长公共后缀”位置

(图出自 https://blog.csdn.net/fx677588/article/details/53406327,有改动)

代码实现技巧

  1. 先计算子串的每个“最长公共前后缀”,也就是大部分教程提到的next数组

相关文章:

  • 2022-12-23
  • 2021-06-07
  • 2021-10-25
猜你喜欢
  • 2021-11-09
  • 2021-10-05
相关资源
相似解决方案