BF算法
BF算法,即暴风(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。
模式匹配:子串的定位运算。在主串S中查找与模式T相匹配的子串。
算法复杂度分析
图解(来自网络)
由于是穷举暴力解法,算法复杂度可想而知。
该算法最理想的时间复杂度 O(n)
,n 表示串 A 的长度,即第一次匹配就成功。
BF 算法最坏情况的时间复杂度为 O(n*m)
,n 为串 A 的长度,m 为串 B 的长度。例如,串 B 为 "0000000001",而串 A 为 "01",这种情况下,两个串每次匹配,都必须匹配至串 A 的最末尾才能判断匹配失败,因此运行了 n*m 次。
对于大量的数据来说,BF简直糟透了。
代码见我github :index_BF
一直在写KMP算法,但是在调试有问题。源代码也是在我GitHub放着,希望有大佬可以指点一下。