利用前缀树实现敏感词过滤

输入一串字符串:

敏感词:

 根据敏感词建立起来地前缀树:

 在字符串中检索到敏感词前缀树中含有的敏感词就把敏感词替换成*

 

 所以最后字符串变成:xwa*****ff

 使用前缀树过滤敏感词:

三个指针,一个指针在前缀树上移动,剩下两个指针(假设为指针A和指针B)在文本中进行移动

每次比较,前缀树上的指针都要从根节点重新出发,然后双指针在文本中进行移动

刚开始指针A和指针B是重合的,然后去前缀树中第一层的结点中查找是否有指针A指向的字符,如果没有,指针A往后移,如果有,前缀树指针和指针B同时移动,找出敏感词,然后将这一段字符全部替换成****

root结点不存储字符,用一个标志位isWord来判断这个结点是不是叶子节点

三个指针,p1指向root,p2和p3初始时指向第一个字符,p2标志的是敏感词的起始位置,p3查找敏感词的结尾

找到了一个敏感词bf

首先需要初始化前缀树,将敏感词作为字符串全部插入到Trie树中,然后去遍历帖子的每一个字,然后将其中的敏感词替换成***

1.在resources目录添加敏感词字典sensitive-words.txt

NowCoder_9_2

2. 最后效果:

        String text = "这里可以赌博,可以嫖娼,可以吸毒,可以开票,哈哈哈!";
        text = sensitiveFilter.filter(text);
        System.out.println(text);

        text = "这里可以☆赌☆博☆,可以☆嫖☆娼☆,可以☆吸☆毒☆,可以☆开☆票☆,哈哈哈!";
        text = sensitiveFilter.filter(text);
        System.out.println(text);
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值