敏感词检测——敏感词出现的次数c++
时间: 2023-07-31 20:13:39 浏览: 150
要实现敏感词出现次数的检测,可以使用字符串匹配算法。最常用的是KMP算法。
KMP算法的基本思想是:当出现字符串不匹配时,可以记录一部分之前已经匹配的文本内容,利用这些信息避免从头再去做匹配。
以下是一个基于KMP算法的C++函数,可以检测一个字符串中敏感词出现的次数:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int kmpSearch(string s, string p) {
int n = s.size();
int m = p.size();
int cnt = 0;
int* next = new int[m];
next[0] = -1;
int j = -1;
for (int i = 1; i < m; i++) {
while (j >= 0 && p[i] != p[j + 1]) {
j = next[j];
}
if (p[i] == p[j + 1]) {
j++;
}
next[i] = j;
}
j = -1;
for (int i = 0; i < n; i++) {
while (j >= 0 && s[i] != p[j + 1]) {
j = next[j];
}
if (s[i] == p[j + 1]) {
j++;
}
if (j == m - 1) {
cnt++;
j = next[j];
}
}
delete[] next;
return cnt;
}
int main() {
string s = "这是一个测试字符串,测试敏感词的出现次数。";
string p = "测试";
int cnt = kmpSearch(s, p);
cout << "敏感词出现次数:" << cnt << endl;
return 0;
}
```
这个函数中,s表示待检测的字符串,p表示敏感词。使用KMP算法进行字符串匹配,统计匹配成功的次数即可得到敏感词出现的次数。
阅读全文