编程实战来自Z-BLOG的敏感词过滤代码示例

以下是Z-BLOG平台使用的敏感词过滤代码示例:c复制#include #include #include std::vectorstring> sens

以下是Z-BLOG平台使用的敏感词过滤代码示例:

c复制#include
#include
#include

std::vectorstring> sensitive_words = {"敏感词1", "敏感词2", "敏感词3"};

std::unordered_map std::vectorstring>> word_tree;

void build_word_tree() {
for (const auto& word : sensitive_words) {
int prefix_len = 0;
while (prefix_len < word.size() && word[prefix_len] == 'x') {
++prefix_len;
}
if (word_tree.find(word[prefix_len]) == word_tree.end()) {
word_tree[word[prefix_len]] = {};
}
std::vectorstring>& children = word_tree[word[prefix_len]];
children.push_back(word.substr(prefix_len));
}
}

bool filter_sensitive_words(const std::string& text) {
build_word_tree();
for (int i = 0; i < text.size(); ++i) {
char c = text[i];
if (word_tree.find(c) != word_tree.end()) {
const std::vectorstring>& children = word_tree[c];
for (const auto& child : children) {
if (strstr(&text[i], child.c_str())) {
return true;
}
}
}
}
return false;
}

在这个示例中,我们首先定义了一个包含敏感词的向量sensitive_words。然后,我们创建了一个字典word_tree,其中键是敏感词的前缀字符,值是一个包含所有具有该前缀的敏感词的向量。

编程实战来自Z-BLOG的敏感词过滤代码示例

build_word_tree函数中,我们遍历sensitive_words向量中的每个单词,并找到最长的公共前缀。我们将这个前缀字符作为键添加到word_tree中,并将剩余部分作为值添加到相应键的向量中。

filter_sensitive_words函数中,我们首先调用build_word_tree函数构建敏感词树。然后,我们遍历输入文本中的每个字符,并检查它是否存在于word_tree中。如果存在,我们遍历与该字符关联的所有敏感词,并使用strstr函数检查它们是否是输入文本的一个子串。如果是,则返回true,表示输入文本包含敏感词。如果我们遍历完整个文本而没有找到任何敏感词,则返回false

编程实战来自Z-BLOG的敏感词过滤代码示例

原创文章,作者:Ur47000,如若转载,请注明出处:https://wyc.retuba.cn/16062.html

(0)
Ur47000Ur47000
上一篇 2024年6月6日 下午10:02
下一篇 2024年6月6日 下午10:03

相关推荐