用c++实现给定一个文本,在该文本中查找并定位任意给定字符串。用BF算法实现
时间: 2024-09-25 13:11:41 浏览: 58
在 C++ 中,要使用 Brute Force (暴力搜索) 算法,也称为朴素字符串匹配,来查找给定文本中任意给定的字符串,可以使用经典的滑动窗口方法。这里是一个简单的示例:
```cpp
#include <iostream>
#include <string>
// 搜索函数,返回给定子串在主串中的起始位置
int findSubstring(const std::string& text, const std::string& pattern) {
if (pattern.length() > text.length())
return -1; // 如果子串长度大于主串,不可能找到
int n = text.size();
int m = pattern.size();
int i = 0;
for (i = 0; i <= n - m; ++i) { // 使用滑动窗口
bool found = true;
for (int j = 0; j < m; ++j) {
if (text[i + j] != pattern[j]) {
found = false;
break;
}
}
if (found)
return i; // 找到就返回开始索引
}
return -1; // 没有找到返回-1
}
int main() {
std::string text = "Hello, this is a sample text.";
std::string pattern = "sample";
int position = findSubstring(text, pattern);
if (position == -1) {
std::cout << "Pattern not found.\n";
} else {
std::cout << "Pattern found at index: " << position << "\n";
}
return 0;
}
```
在这个例子中,`findSubstring` 函数会遍历主串 `text`,对于每个可能的位置 `i`,检查从 `i` 开始的 `m` 个字符是否与子串 `pattern` 相等。如果找到匹配,它就会立即返回那个位置;如果没有找到,则继续搜索直到结束。
阅读全文