<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
$obj = new DFA();
$obj->addKeyWord('王八蛋');
$obj->addKeyWord('王八羔子');
$obj->addKeyWord('香煙');
$obj->addKeyWord('狗兒子');
$obj->getHashMap();
var_dump($obj->searchKey('王八蛋'));
var_dump($obj->searchKey('王八'));
class DFA
{
private $arrHashMap = [];
public function getHashMap() {
print_r($this->arrHashMap);
}
public function addKeyWord($strWord) {
$len = mb_strlen($strWord, 'UTF-8');
// 傳址
$arrHashMap = &$this->arrHashMap;
for ($i=0; $i < $len; $i++) {
$word = mb_substr($strWord, $i, 1, 'UTF-8');
// 已存在
if (isset($arrHashMap[$word])) {
if ($i == ($len - 1)) {
$arrHashMap[$word]['end'] = 1;
}
} else {
// 不存在
if ($i == ($len - 1)) {
$arrHashMap[$word] = [];
$arrHashMap[$word]['end'] = 1;
} else {
$arrHashMap[$word] = [];
$arrHashMap[$word]['end'] = 0;
}
}
// 傳址
$arrHashMap = &$arrHashMap[$word];
}
}
public function searchKey($strWord) {
$len = mb_strlen($strWord, 'UTF-8');
$arrHashMap = $this->arrHashMap;
for ($i=0; $i < $len; $i++) {
$word = mb_substr($strWord, $i, 1, 'UTF-8');
if (!isset($arrHashMap[$word])) {
// reset hashmap
$arrHashMap = $this->arrHashMap;
continue;
}
if ($arrHashMap[$word]['end']) {
return true;
}
$arrHashMap = $arrHashMap[$word];
}
return false;
}
}
DFA敏感詞檢測方案
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 題目來自:Python 練習(xí)冊。題目1.7:敏感詞文本文件 filtered_words.txt,里面的內(nèi)容為以下...
- PHP SDK開發(fā)包下載https://help.aliyun.com/knowledge_detail/5018...
- 1. 題目 第 0011 題: 敏感詞文本文件 filtered_words.txt,里面的內(nèi)容為以下內(nèi)容,當(dāng)用戶...
- 序 本文簡單介紹下敏感詞或者臟詞檢測算法。 經(jīng)典AC算法 經(jīng)典的AC算法由三部分構(gòu)成,goto表,fail表和ou...