@service
public
class
sensitivewordutil
extends
timertask
return;
} else
string strs = keyword.split(",");
setkeywordset = new hashset();
for (string str : strs)
sensitivewordmap = addsensitivewordtohashmap(keywordset);
log.info("=sensitiveword=" + json.tojsonstring(sensitivewordmap));
}/**
* 讀取敏感詞庫,將敏感詞放入hashset中,構建乙個dfa演算法模型:
* },習=}}}
* 待整個map生成好最後直接賦值
**@param keywordset 敏感詞庫
*/private concurrenthashmap addsensitivewordtohashmap(setkeywordset) else
if (i == key.length() - 1) }}
return sensitivewordmaporg;
}/**
* 判斷文字是否包含敏感字元
**@param txt 文字
*@param matchtype 匹配規則 1:最小匹配規則,2:最大匹配規則
*@return 若包含返回true,否則返回false
*/public
static
boolean
iscontaintsensitiveword(string txt, int matchtype)
for (int i = 0; i < txt.length(); i++)
}return flag;
}/**
* 獲取文字中的敏感詞
**@param txt 文字
*@param matchtype 匹配規則:1:最小匹配規則,2:最大匹配規則
*@return
*/public
static setgetsensitiveword(string txt, int matchtype)
for (int i = 0; i < txt.length(); i++)
}return sensitivewordlist;
}/**
* 替換敏感字字元
**@param txt 替換字元,預設*
*/public
static string replacesensitiveword(string txt)
string word = replacesensitiveword(txt, maxmatchtype, null);
return word;
}/**
* 替換敏感字字元
**@param txt
*@param matchtype
*@param replacechar 替換字元,預設*
*/public
static string replacesensitiveword(string txt, int matchtype, string replacechar)
string resulttxt = txt;
setset = getsensitiveword(txt, matchtype);//獲取所有的敏感詞
iteratoriterator = set.iterator();
while (iterator.hasnext())
return resulttxt;
}/**
* 獲取替換字串
**@param replacechar
*@param length
*@return
*/private
static string getreplacechars(string replacechar, int length)
return resultreplace;
}/**
* 檢查文字中是否包含敏感字元,檢查規則如下:
* *@param txt
*@param beginindex
*@param matchtype
*@return 如果存在,則返回敏感詞字元的長度,不存在返回0
*/@suppresswarnings()
public
static
intchecksensitiveword(string txt, int beginindex, int matchtype)
for (int i = beginindex; i < txt.length(); i++)
}} else
}if (matchflag < 1 || !flag)
return matchflag;
}
演算法程式設計 Trie樹(字典樹)
trie樹是一種非常簡單且有效的資料結構,其主要用於針對包含大量的字串,但所有字串包含字元型別數量較少的情況下,對字串的儲存。最典型的應用就是儲存單詞,因此也稱作字典樹。例如,給定幾個單詞,則可以用trie樹進行儲存 由上圖可知,trie樹具有幾個性質 注,樹中每乙個結點都是有唯一的編號 idx i...
Trie樹(字典樹)
trie樹的核心思想是用空間換時間,通過在樹中儲存字串的公共字首,來達到加速檢索的目的。例如,對於一棵儲存由英文本母組成的字串的trie樹,如下圖 trie樹在實現的時候,可以用左兒子右兄弟的表示方法,也可以在每個節點處開設乙個陣列,如上圖的方法。trie樹的主要操作是插入 查詢,也可以進行刪除。插...
字典樹 Trie樹
字典樹 trie樹 顧名思義是一種樹形結構,屬於雜湊樹的一種。應用於統計 排序 查詢單詞 統計單詞出現的頻率等。它的優點是 利用字串的公共字首來節約儲存空間,最大限度地減少無謂的字串比較,查詢效率比雜湊表高。字典樹的結構特點 根節點不代表任何字元。其他節點從當前節點回溯到根節點可以得到它代表的字串。...