输入一串字符串:
敏感词:
根据敏感词建立起来地前缀树:
在字符串中检索到敏感词前缀树中含有的敏感词就把敏感词替换成*
所以最后字符串变成:xwa*****ff
使用前缀树过滤敏感词:
三个指针,一个指针在前缀树上移动,剩下两个指针(假设为指针A和指针B)在文本中进行移动
每次比较,前缀树上的指针都要从根节点重新出发,然后双指针在文本中进行移动
刚开始指针A和指针B是重合的,然后去前缀树中第一层的结点中查找是否有指针A指向的字符,如果没有,指针A往后移,如果有,前缀树指针和指针B同时移动,找出敏感词,然后将这一段字符全部替换成****
root结点不存储字符,用一个标志位isWord来判断这个结点是不是叶子节点
三个指针,p1指向root,p2和p3初始时指向第一个字符,p2标志的是敏感词的起始位置,p3查找敏感词的结尾
找到了一个敏感词bf
首先需要初始化前缀树,将敏感词作为字符串全部插入到Trie树中,然后去遍历帖子的每一个字,然后将其中的敏感词替换成***
1.在resources目录添加敏感词字典sensitive-words.txt
2. 最后效果:
String text = "这里可以赌博,可以嫖娼,可以吸毒,可以开票,哈哈哈!";
text = sensitiveFilter.filter(text);
System.out.println(text);
text = "这里可以☆赌☆博☆,可以☆嫖☆娼☆,可以☆吸☆毒☆,可以☆开☆票☆,哈哈哈!";
text = sensitiveFilter.filter(text);
System.out.println(text);