数据结构与算法简记--字符串匹配

字符串匹配


  • 在字符串 A 中查找字符串 B
  • 主串为A
  • 模式串为B

BF算法(Brute Force)

  • 最简单、粗暴的字符串匹配算法。
  • 实现思路是,拿模式串与主串中是所有子串匹配,看是否有能匹配的子串。时间复杂度也比较高,是 O(n*m),n、m 表示主串和模式串的长度。
  • 满足KISS(Keep it Simple and Stupid)设计原则--实际的软件开发中,因为这种算法实现简单,对于处理小规模的字符串匹配很好用。

RK算法(发明者 Rabin 和 Karp 的名字)

  • 借助哈希算法对 BF 算法进行改造,即对每个子串分别求哈希值,然后拿子串的哈希值与模式串的哈希值比较,减少了比较的时间。
  • 理想情况下,RK 算法的时间复杂度是 O(n),跟 BF 算法相比,效率提高了很多。不过这样的效率取决于哈希算法的设计方法,如果存在冲突的情况下,时间复杂度可能会退化。
  • 极端情况下,哈希算法大量冲突,时间复杂度就退化为 O(n*m)。

 

原文地址:https://www.cnblogs.com/wod-Y/p/12058351.html