BF算法代码
时间: 2023-07-03 12:05:07 浏览: 89
BF算法,也叫暴力匹配算法,是一种字符串匹配算法,其基本思想是从主串的第一个字符开始,依次和模式串的每个字符进行比较,如果匹配成功,则继续比较下一个字符,直到模式串的最后一个字符匹配成功,此时说明找到了该模式串在主串中的位置,否则从主串的下一个字符开始继续匹配。
BF算法代码如下:
```c++
#include <iostream>
#include <string>
using namespace std;
int bruteForce(string s, string p) {
int n = s.length();
int m = p.length();
for (int i = 0; i <= n - m; i++) {
int j;
for (j = 0; j < m; j++) {
if (s[i + j] != p[j]) {
break;
}
}
if (j == m) {
return i;
}
}
return -1;
}
int main() {
string s = "hello world";
string p = "world";
int pos = bruteForce(s, p);
if (pos == -1) {
cout << "not found" << endl;
} else {
cout << "found at position " << pos << endl;
}
return 0;
}
```
其中,bruteForce函数接受两个参数,分别是主串s和模式串p,返回模式串在主串中的位置,如果没有找到,则返回-1。主要思想是通过嵌套循环,依次比较主串和模式串的每个字符,直到匹配成功或者主串中的字符全部比较完毕。在循环中,i表示主串的起始位置,j表示模式串的起始位置,每次循环先比较s[i+j]和p[j]是否相等,如果不相等,则说明当前匹配失败,退出内层循环,从下一个位置开始继续匹配;如果匹配成功,则继续比较下一个字符,直到模式串中的所有字符都匹配成功。如果循环结束后仍未匹配成功,则返回-1,否则返回匹配成功的位置。
阅读全文