BF 算法中的 BF 是 Brute Force 的缩写,中文叫作暴力匹配算法,也叫朴素匹配算法。
BF 算法的思想:在主串中,检查起始位置分别是 0、1、2….n-m 且长度为 m 的 n-m+1 个子串,看有没有跟模式串匹配的。
比如主串:baddef,模式串:abc
BF 算法的思想就是将文本串 s 的第一个字符与模式串 p 的第一个字符进行匹配:
- 若相等,则继续比较 s 的第二个字符和 p 的第二个字符
- 若不相等,则比较 s 的第二个字符和 p 的第一个字符
依次比较下去,直到得出最后的匹配的结果

public static int bfMatch(String str, String sub, int pos) {if (pos < 0 || pos > str.length()) {return -1;}int baseIndex = pos;int index = 0;while(baseIndex < str.length() && index < sub.length()) {if (str.charAt(baseIndex) == sub.charAt(index)) {// 字符匹配baseIndex++;index++;} else {// 主串回退从新开始匹配baseIndex = baseIndex - index + 1;index = 0;}}if (index >= sub.length()) {// 子串匹配结束,计算匹配的起始位置return baseIndex - index;}return -1;}
