用BF算法实现串匹配问题,用c++来写代码
时间: 2024-11-15 18:26:49 浏览: 9
Brute Force (朴素) 算法,也称为Boyer-Moore Hunt算法的简单版本,是一种简单的字符串匹配算法。它逐字符比较搜索字符串中的每个字符与目标串中的对应字符。如果找到匹配,就继续向下移动;如果不匹配,则从目标串的末尾开始向右跳过一定距离,尝试避免无效的比较。
以下是使用C++实现的一个简化版的BF算法:
```cpp
#include <iostream>
#include <string>
// 定义匹配函数,如果s1[i] == s2[j], 移动j的位置
void match(char s1[], char s2[], int i, int j) {
while (i < strlen(s1) && j >= 0 && s1[i] == s2[j]) {
++i;
--j;
}
}
int main() {
std::string text = "Hello, world!";
std::string pattern = "world";
// 遍历文本中的所有可能位置
for (size_t i = 0; i <= text.size() - pattern.size(); ++i) {
match(text.c_str(), pattern.c_str(), i, pattern.size() - 1); // 从最后一位开始匹配
if (i + pattern.size() > text.size()) break; // 如果超过范围,提前结束
if (j == -1) {
std::cout << "Pattern found at index " << i << std::endl;
}
}
return 0;
}
```
在这个例子中,`match()` 函数负责处理字符匹配过程,而 `main()` 函数则是搜索整个文本。请注意,这并不是最优的解决方案,因为对于较长的目标串,BF算法的时间复杂度会非常高。
阅读全文