一、BF匹配算法
BF模式匹配算法,又称朴素模式匹配算法,简单模式匹配算法,暴力匹配算法。对于字符串,现有一个主串和一个子串,那么子串在主串中的定位操作通常称为串的模式匹配。下面我们来了解一下BF匹配算法。
假设有一主串S = “goodgoogle”,子串T = “google”,那么找到子串在主串中的位置,我们直接想到的方法就是如下:
- 1、先将子串从主串的头部开始比较。其中直线符号为相等,闪电符号为不相等。
- 2、遇到不相等的之后,将子串向右滑动一个单位,继续重新开始比较。
- 3、依次类推,直到在主串中匹配到子串为止。
注:在C/C++、Java中字符串末尾以’/0‘结尾,所以当匹配到’/0‘还没有匹配上时,那就证明主串中没有子串。
上述过程也就是我们的BF算法,因为其简单直观,我们即称其为简单算法或暴力算法。下面我们来分析一下BF算法的具体过程:
我们设主串S和子串T的下标都从0开始,i=0;j=0。
当T[j]=S[i]时,i和j均加一,也就是均往右移动一个单位