字符串匹配
- 在字符串 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)。