牛客网项目第三章-开发社区核心功能-过滤敏感词

牛客网项目第三章-开发社区核心功能-过滤敏感词
在这里插入图片描述
在访问某个网站的时候,在网站上发布一些内容,该网站会对我们发布的内容进行过滤,色情、暴力等非法内容会被隐去,或者把这些词汇更换成*号;发布内容可以看成一串字符串,可以使用API对字符串里面的内容进行替换,例如String中replace();但网站在实际运营过程中,敏感词比较多,有几十甚至上百,输入的字符串也可能过长,使用String性能太差,通常会采用前缀树,来自己生成一个敏感词过滤方法。下节发布帖子可以用到该敏感词过滤方法。

一、前缀树

1.查找效率高,消耗内存大,以空间换时间
2.应用:(1)字符串检索,可以检索到一串字符串中的敏感词
(2)词频统计:可以统计出一篇文章中的哪个词出现的频率最多,热点词
(3)字符串排序:对文章进行排序

二、敏感词过滤器工具

1.定义前缀树
前缀树过滤敏感词的逻辑
2.根据敏感词,初始化前缀树
(1)前缀树根节点为空,除了根节点其余节点只包含一个字符,从根节点到某一个节点就是当前该节点对应的字符串,每个节点的所有自己点包含的字符串不同,相同需要合并
在这里插入图片描述
(2)通过前缀树判断输入的字符串有无敏感词
需要三个指针,第一个指针指向根节点,第二个指针指向字符串的第一个字符(标记敏感词的开头),第三个指针指向字符串的第一个字符(标记敏感词的结尾)定义一个变量StringBuilder存放过滤后的字符串
在这里插入图片描述

三、编写过滤敏感词的方法

1.首先在resources包下定义存放敏感词的文件sensitive-words.txt
2.在util包下定义敏感词过滤工具类SensitiveFilter,为了复用方便,加注解由容器管理
在这里插入图片描述
(1)在SensitiveFilter中定义private修饰的内部类前缀树
在这里插入图片描述
(2)根据敏感词初始化前缀树
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)定义将敏感词加到前缀树的方法
在这里插入图片描述
(4)检索敏感词
在这里插入图片描述
(5)在test包下新建一个测试类SensitiveTests
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值