DFA算法C#实现
原文: DFA算法C#实现 搬运自: https://www.cnblogs.com/AlanLee/p/5329555.html 原理搜关键字:DFA算法 基本照抄了原文的JAVA代码,其中应该可以用Dictionary<string,int>来代替Hashtable,但搜到的资料都说Hashtable快得要命,虽然知道他们说的是JAVA环境,但也懒得改了,这东西实现出来不卡线程就行。 试了一下,初始化一个一万九千多行的文本大概需要40毫秒,然后在一个大约二万字的文本内搜索100多个关键词(随机插入测试的,话说处理这个测试文本还花了一些功夫,第一版的随机插入,时不时就会插入到前面插入的关键词中间去,导致匹配出来的数量老是不对),只需要7毫秒。 1 /// <summary> 2 /// 过滤词DFA算法实现 3 /// </summary> 4 public class ForbiddentWordLibrary 5 { 6 /// <summary> 7 /// 用分行过滤词文件来初始化过滤词库 8 /// </summary> 9 /// <param name="path"> 文件路径 </param> 10 public ForbiddentWordLibrary( string path ) 11 { 12 try 13 { 14 words = new HashSet