朴素的模式匹配算法c++
时间: 2023-11-18 21:12:47 浏览: 98
朴素模式匹配算法
朴素的模式匹配算法是一种简单的字符串匹配算法,它通过将主串中所有长度为模式串长度的子串依次与模式串进行对比,直到找到一个完全匹配的子串,或者所有的子串都不匹配为止。具体实现是通过逐个比较主串和模式串的字符,如果字符相同,则继续比较下一个字符,如果字符不同,则主串回溯到上一个起始比较字符的下一个字符,模式串回溯到第一个字符开始匹配。
以下是用C++实现的朴素模式匹配算法的代码示例:
```cpp
#include <bits/stdc++.h>
using namespace std;
int bruteForce(string s, string t, int pos) {
int i = pos, j = 0;
while (i < s.size() && j < t.size()) {
if (s[i == t[j]) {
i++;
j++;
} else {
i = i - j + 1;
j = 0;
}
}
return j >= t.size() ? i - t.size() : 0;
}
int main(int argc, char const *argv[]) {
string s, t;
cin >> s >> t;
printf("%d", bruteForce(s, t, 0));
return 0;
}
```
以上代码中,`bruteForce`函数实现了朴素模式匹配算法。它接受两个字符串参数,分别是主串`s`和模式串`t`,以及一个起始位置`pos`。函数通过逐个比较字符的方式进行匹配,并返回匹配的位置。在主函数中,我们输入了主串和模式串,然后调用`bruteForce`函数进行匹配,最后输出匹配的位置。
对于输入数据`indexbruteforcealgorithm`和`bruteforce`,输出结果为`5`,表示模式串在主串中的起始位置为第5个字符的位置。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [朴素模式匹配算法(C语言)](https://blog.csdn.net/qq_44096670/article/details/117473063)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [BF朴素模式匹配算法 C++实现](https://blog.csdn.net/qq_44486439/article/details/106796807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文