BF 算法
BF 算法
BF 算法,即 Brute Force,暴力匹配算法,也叫朴素匹配算法。
一、原理
所谓的暴力匹配,就是:
- 检查主串的所有子串,看是否与模式串匹配
比如,主串是 ababababca
,模式串是 abababca
。
- 从前往后,依次检查主串的每一个子串是否跟模式串匹配
第 1 轮(比较第 1 个子串):
1 | 匹配失败 |
第 2 轮(比较第 2 个子串):
1 | 匹配失败 |
第 3 轮(比较第 3 个子串):
1 | 匹配成功 |
BF 算法就是通过匹配全部子串的方式,来实现字符串匹配。
二、分析
假设主串长度是 n,模式串长度是 m。
那么匹配次数(即主串中长度为 m 的子串个数)是:
1 | n - m + 1 |
每次匹配的时间复杂度是 O(m)
,所以总的时间复杂度是:
1 | O((n - m + 1) * m), 即 O(n * m) |
三、应用
虽然 BF 算法的时间复杂度比较高,但是它在实际应用中还是会经常用到:
- 很多场景下,主串和模式串的长度都不会太长,所以时间复杂度也不会太高
- BF 算法思想简单,实现起来也比较简单,代码不容易出错,调试起来也简单
所以,大部分的简单场景下,BF 算法是可以满足需求的。
参考
附录
1 | /** |