Java面试题分享-敏感词替换 java 版本

入职啦最近更新了一些后端笔试、面试题目,大家看看能快速实现吗?

关注 入职啦 微信公众号,每日更新有用的知识,Python,Java,Golang,Rust,javascript 等语言都有

不要再用replaceAll做敏感词替换了(Java实现)

在处理文本数据时,我们经常需要对敏感词进行过滤。这是一个常见的需求,尤其是在社交媒体、论坛和评论系统等需要用户生成内容的场景中。

很多人第一反应就是用replace实现敏感词的替换,这个方法虽然可以实现,但是效率实在太低,因为敏感词不是只有一个,可能会达到上万个,每次都用replace替换一遍,效率太低了。

最经典的敏感词算法可以用Trie树来实现,Trie树是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。

实现原理
我们需要实现一个敏感词过滤器,主要包括以下几个步骤:

  • 构建一个Trie树,将敏感词存储在树中
  • 遍历文本,查找是否包含敏感词
  • 如果包含敏感词,替换成*号
  • 返回过滤后的文本

Trie树的每个节点代表一个字符串(前缀),每个节点都有多个子节点,每个子节点代表一个字符。在Trie树中查找字符串的时间复杂度为O(n),其中n为字符串的长度。

👉查看一下Trie树的存储结构

意味着相同前缀的字符串,Trie树中的节点可以共享,这样可以节省空间,比如"apple"和"app"的前缀"app"可以共享,只要文本中出现app开头的敏感词,就可以直接从app节点开始查找,而不是每个单词从新开始查找。

我们可以遍历文本中的每个字符,然后使用Trie树来检查是否存在以该字符开始的敏感词。如果存在敏感词,就用指定的替换词替换该敏感词。

下面来看看是如何实现的吧

Java 版本的实现

👉Java的实现

查看完整代码

👉Java完整代码

这个代码算法比较适合英文比较多的场景,如果是中文场景,会导致内存占用比较高,那么就需要进行简单的优化 如果大家想了解中文的优化方案可以留言或者关注我们的公众号:入职啦 我们会介绍中文敏感词过滤的优化方案

结论

敏感词替换是工作中必备的功能,如果你只会用replace方法,那么你的代码效率会非常低。作为一个合格的后端工程师,你必须会用算法来解决业务问题

有些场景不需要最先进的算法,只需要用朴素的算法就可以解决问题

通过应用算法到实际问题中,提高我们的编程能力,欢迎扫码加入我们的编程实战群,也可以关注我们的公众号(入职啦),学习更多的后端编程技巧

加群或者 公众号回复,有完整代码,可以获取Java版本和Java版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/18797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

npm获取yarn在安装依赖时 git://github.com/user/xx.git 无法访问解决方法 -- 使用 insteadOf设置git命令别名

今天在使用一个node项目时突然遇到 一个github的拉取异常&#xff0c;一看协议居然是git://xxx 貌似github早就不用这种格式了&#xff0c; 而是使用的gitgithub.com:xxx 这种或者https协议&#xff0c;解决方法&#xff1a; 使用insteadof设置git别名 url.<base>.inste…

DNF手游攻略:开荒必备攻略!

DNF手游马上就要开服了&#xff0c;今天给大家带来最完整的DNF手游入门教程。这篇攻略主要讲述了 DNF手游开服第一天要注意的事项&#xff0c;这是一个新手必备的技能书&#xff0c;可以让你在开服的时候&#xff0c;少走一些弯路&#xff0c;让你更快完成任务&#xff01;废话…

蓝牙Mesh模块多跳大数据量高带宽传输数据方法

随着物联网技术的飞速发展&#xff0c;越来越多的设备需要实现互联互通。蓝牙Mesh网络作为一种低功耗、高覆盖、易于部署的无线通信技术&#xff0c;已经成为物联网领域中的关键技术之一。在蓝牙Mesh网络中&#xff0c;节点之间可以通过多个跳数进行通信&#xff0c;从而实现大…

mysql-日志管理-error.log

日志管理 默认的数据库日志 vim /etc/my.cnf //错误日志 log-error/usr/local/mysql/mysql.log查看数据库日志 tail -f /usr/local/mysql/mysql.log1 错误日志 &#xff1a;启动&#xff0c;停止&#xff0c;关闭失败报错。rpm安装日志位置 /var/log/mysqld.log #默认开启 2 …

【OrangePi AIpro】香橙派 AIpro 为AI而生

产品简介 OrangePi AIpro(8T)&#xff1a;定义边缘智能新纪元的全能开发板 在当今人工智能与物联网技术融合发展的浪潮中&#xff0c;OrangePi AIpro(8T)凭借其强大的硬件配置与全面的接口设计&#xff0c;正逐步成为开发者手中的创新利器。这款开发板不仅代表了香橙派与华为…

最新淘宝死店全自动采集私信筛选脚本,号称日赚500+【采集软件+使用教程】

原理&#xff1a; 利用脚本自动采集长时间未登录店铺&#xff0c;然后脚本自动私信对应的店铺&#xff0c;看看商家是不是不回消息来判断是否是死店&#xff0c;再下单购买死店的产品&#xff0c;超过48小时不发货就可以联系客服获得赔付&#xff0c;一单利润百分之5%-30%&…

配置阿里yum源

配置阿里yum源&#xff08;这个很重要&#xff09;&#xff1a;https://developer.aliyun.com/article/1480470 1.备份系统自带yum源配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2.下载ailiyun的yum源配置文件 2.1 CentOS7 wge…

SRS、ZLMediakit音视频流媒体服务器

SRS、ZLMediakit都是做为webrtc的SFU&#xff08;selective forward unit&#xff09; WebRTC 开发实践&#xff1a;为什么你需要 SFU 服务器 https://mp.weixin.qq.com/s?__bizMzAxNTc1MjM0Mw&mid2652213442&idx1&sn33f0393a2dbc2b6a39c613bb238ec145&chksm…

Ansible03-Ansible Playbook剧本详解

目录 写在前面5. Ansible Playbook 剧本5.1 YAML语法5.1.1 语法规定5.1.2 示例5.1.3 YAML数据类型 5.2 Playbook组件5.3 Playbook 案例5.3.1 Playbook语句5.3.2 Playbook1 分发hosts文件5.3.3 Playbook2 分发软件包&#xff0c;安装软件包&#xff0c;启动服务5.3.3.1 任务拆解…

DHCP原理和配置服务

一、DHCP工作原理 DHCP(Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议)由Internet工作任务小组设计开发专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议 使用DHCP的好处 减少管理员的工作量 避免输入错误的可能 避免IP地址冲突 当更改IP地址…

VUE3 学习笔记(9):VUE 插槽的概念、基本应用、传值

在调用子组件时&#xff0c;我们希望把父组件的HTML传给子组件&#xff0c;那么在引用子组件内部进行定义&#xff0c;然后子组件通过slot标签进行接收 基本示例 父 app.vue <!--内容控制--> <template><test><div><p>{{name}}</p><p…

Hikyuu性能实测:A股全市场1915万日K Bar,HDF5首次加载计算6.5秒

因为网友对“百万数据跑两秒"有疑问&#xff0c;经过一番交流后&#xff0c;才发现原来是我没有注明是首次数据加载过程中进行的计算&#xff0c;否则百万数据2秒反而是显的慢了&#xff0c;对此重新更新了相关描述&#xff1a;“AMD 7950x 实测&#xff1a;A股全市场&…

5.28.1 使用卷积神经网络检测乳腺癌

深度学习技术正在彻底改变医学图像分析领域&#xff0c;因此在本研究中&#xff0c;我们提出了卷积神经网络 (CNN) 用于乳腺肿块检测&#xff0c;以最大限度地减少手动分析的开销。CNN 架构专为特征提取阶段而设计&#xff0c;并采用了更快的 R-CNN 的区域提议网络 (RPN) 和感兴…

py黑帽子学习笔记_scapy

简介 代码简洁&#xff1a;相比于前两个博客总结&#xff0c;很多socket操作&#xff0c;如果使用scapy仅需几行代码即可实现 获取邮箱身份凭证 编写基础嗅探器&#xff0c;脚本可显示任何收到的一个包的详细情况 直接运行 尝试监听邮件收发&#xff0c;监听指定端口&#x…

NTP服务的DDoS攻击:原理和防御

NTP协议作为一种关键的互联网基础设施组件&#xff0c;旨在确保全球网络设备间的时钟同步&#xff0c;对于维护数据一致性和安全性至关重要。然而&#xff0c;其设计上的某些特性也为恶意行为者提供了发动大规模分布式拒绝服务(DDoS)攻击的机会。以下是NTP服务DDoS攻击及其防御…

【深度学习实战—9】:基于MediaPipe的坐姿检测

✨博客主页&#xff1a;王乐予&#x1f388; ✨年轻人要&#xff1a;Living for the moment&#xff08;活在当下&#xff09;&#xff01;&#x1f4aa; &#x1f3c6;推荐专栏&#xff1a;【图像处理】【千锤百炼Python】【深度学习】【排序算法】 目录 &#x1f63a;一、Med…

5个免费下载音乐的网站,喜欢听什么就搜什么

以下5个音乐下载网站&#xff0c;中国人不骗中国人&#xff0c;全部免费。个个曲库丰富&#xff0c;喜欢听什么就搜什么&#xff0c;还能下载mp3格式&#xff0c;点赞收藏即刻拥有&#xff01; 1、MyFreeMP3 tools.liumingye.cn/music/ MyFreeMP3是一个提供音乐播放和下载服…

富凡行是什么软件,来具体聊一聊它的详情,感兴趣的不要错过了

目前做网络项目的人很多&#xff0c;也就衍生出了很多的软件、项目、平台。接触过了很多的产品&#xff0c;感触颇深&#xff0c;确实市面上的东西差别都很大&#xff0c;有好的&#xff0c;有不好的。 我也是喜欢在网上做点副业&#xff0c;自己捣鼓一下&#xff0c;毕竟互联网…

GPT-4:定义未来工作的超级工具

在人工智能的黄金时代&#xff0c;GPT-4&#xff08;Generative Pre-trained Transformer 4&#xff09;以其前所未有的能力&#xff0c;重新定义了工作效率和智能自动化的边界。作为最新一代的语言处理模型&#xff0c;GPT-4不仅仅是一个工具&#xff0c;它是一个全面的解决方…

1.spring源码:初步认识

准备工作 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://www.springframewor…