sqlserver中有一张非法过滤词库表,表中5000+条数据,后台用C#,如何以最快速度对一篇文章进行非法过滤。
3个回答
展开全部
先把词库读到内存中的字典:以第一个字符为Key的字典,以List<string>为Value(考虑到可能有词汇第一个字符是相同的)
Dictionary<char, List<String>> 词库 = new Dictionary<char, List<String>>();
再用 System.IO.FileStream类 读取文件。
先读取一行string line = FileStream1.ReadLine()
然后一个一个字符Read,判断是不是ContainsKey('字符'),如果含有,再把这个字符开头的列表中完整字符串读出来,然后进行比对
foreach (string 字符串 in 列表)
{
int 开始位置 = 当前字符在行中位置
int 搜索长度 = 要比较的字符串长度
使用line.IndexOf(字符串, 开始位置, 搜索长度) > 0 或者使用
line.Contains(字符串) //哪种效率高要试试才知道
这样只需要把文件扫描一次,每次调用哈希表来判断字符,时间复杂度O(1),匹配时搜索当前行的小范围,性能比多次扫描大大提升。
}
我只提供思路,具体代码的自己写把。
如满意,请采纳,谢谢。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询