1、字符串匹配
(1)暴力解法:采用两个for循环,每次匹配的时间复杂度O(m*n)
(2)KMP:时间复杂度O(m+n)
n表示字符串的长度,m表示每个灵感词的长度
(3)trie树
字典树/单词查找树,是一种哈希树的变种。
优点:利用字符串的公共前缀来减少查询时间,最大限度地减少无畏的字符串比较,查询效率比哈希树高(共享字符串的公共前缀)
性质:
1.根节点不包含字符,除根节点外每一个节点都只包含一个字符;
2.从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串;
3.每个节点的所有子节点包含的字符都不相同

trie树的应用:
1.搜索时,输入关键字,待选框会列举出很多相关的信息
2.敏感词汇过滤
3.求以关键字为前缀的字符串的个数

trie树过滤敏感词汇的过程
1、时间复杂度:
如果敏感词汇的长度为m,则每个敏感词的查找时间复杂度是O(m)
字符串的长度为n,我们需要遍历n遍
所以敏感词汇查找这个过程的时间复杂度是O(nm)
如果有t个敏感词的话,构建trie树的时间复杂度是O(t
m),这个可以忽略,因为这个从一开始就要建立,之后重复使用
2、过程
准备:
1、建议一颗trie树,存放敏感词
2、使用3个指针来遍历
p1指向trie树的root
p2指向字符串的第一个字符
p3指向字符串的第一个字符
查找:-------写的不够详细,之后再更新
1、检测有没有以p2指向节点的字符作为前缀的敏感词(从p2指向的字符开始查找):
1、判断p1的孩子节点中是否存在p2指向节点的字符
1、没有:
1、把p3向右移动一格
2、把p2移到p3的位置
3、p1移到root
4、continue
2、有
1、p1指向那个孩子节点
2、p2向后移到一格
3、p3不动
4、continue

如何构造trie树

过滤敏感词汇(trie树实现敏感词过滤)相关推荐

  1. trie树之敏感词过滤算法

    之前写过一篇关于Trie树的介绍:Trie树--在一个字符串集合中快速查找某个字符串.今天就用Trie树来实现敏感词过滤算法. 首先简单介绍一下Trie树的数据结构: 1.根节点不存储字符. 2.Tr ...

  2. 敏感词汇检测及返回敏感源词汇

    import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;/* ...

  3. 【敏感词汇过滤算法】基于DFA-前缀树的敏感词汇过滤算法(项目实用)

    在敏感词汇过滤这块,不同的算法所造成的性能差异是非常大的,选择一个合适的算法非常重要.因为以前做算法的时候做过类似前缀树的字符串匹配之类的算法,所以一开始就打算用前缀树做的,后面了解了一下DFA的相关 ...

  4. AC自动机:多模式串匹配实现敏感词过滤

    文章出处:极客时间<数据结构和算法之美>-作者:王争.该系列文章是本人的学习笔记. 1 敏感词过滤场景 在很多支持用户发表内容的网站,都有敏感词过滤替换的功能.例如将一些淫秽.反动内容过滤 ...

  5. 敏感词过滤算法 为内容保驾护航 Java/.Net/C++/c/Python等语言是如何进行敏感词打码限制的 高效防范违规内容

    有人的地方,就有江湖,有输入框的地方,就有注入风险!有输入框的地方,就有敏感词!敏感词就像一个平台杀手,可能直接导致平台被封锁! 敏感词是一个APP.一个网站.一个内容平台的"杀手" ...

  6. 敏感词过滤案例(Filter过滤器)

    敏感词汇过滤 需求 对UserCRUD_case案例中录入的数据进行敏感词汇的过滤 敏感词汇参考<敏感词汇.txt> 若是敏感词汇,则替换为*** 分析 在进行过滤前后,所获取的reque ...

  7. Filter - 通过拦截器与动态代理实现敏感词汇过滤

    需求:将敏感词汇.txt文件中的词语过滤为 -> "***" 分析: 首先加载文档,将文档中的词汇纳入集合中备用,方便后期比对使用. 使用Proxy动态代理将request对 ...

  8. 鸿蒙os 2.0玩吃鸡,华为鸿蒙OS2.0[敏感词汇屏蔽]能简测:极致画质下的吃鸡王者更胜EMUI11...

    炫舞雷公电母IT之家5月1日消息华为本周已经向部分拥有测试资格的用户推送了H..armonyOS2.0开发者公测版更新,虽然部分功能体验与基于安卓10的EMUI11没有太大差别,但似乎已经给我们带来了 ...

  9. 数据结构与算法之美笔记——基础篇(下):图、字符串匹配算法(BF 算法和 RK 算法、BM 算法和 KMP 算法 、Trie 树和 AC 自动机)

    图 如何存储微博.微信等社交网络中的好友关系?图.实际上,涉及图的算法有很多,也非常复杂,比如图的搜索.最短路径.最小生成树.二分图等等.我们今天聚焦在图存储这一方面,后面会分好几节来依次讲解图相关的 ...

最新文章

  1. 职场协同办公如何使用硬技能,助推团队协作更流畅?
  2. matlab 读取txt文件数据
  3. mysql5.7 部署文档-rpm
  4. 【Linux】一步一步学Linux——mtools命令(244)
  5. 谷歌开源3D舞蹈生成模型FACT,舞姿清奇!
  6. P3435-[POI2006]OKR-Periods of Words【KMP】
  7. sqlite3_column
  8. 全面升级 | 阿里云中间件推出3款新品和3项产品新特性,加速企业中台落地
  9. Windows环境下安装Cassandra1.0.2
  10. html 伪元素原理,CSS伪类伪元素详解
  11. UE4添加人物动画之状态机
  12. 计算机工程师难度排名,【2018一级造价工程师考试各个科目的难度排行榜】- 环球网校...
  13. 怎么授权接入芝麻小程序客服系统?
  14. 数学三角形和倒三角形公式表达了什么
  15. Excel多条件计数——COUNTIFS【获奖情况统计】
  16. 教程:晶莹剔透的水滴绘制过程
  17. 自媒体的推广方式有哪些(自媒体推广的10种方法)
  18. 你们要的线上GC问题案例来啦
  19. sqrt (2)不使用数学库,求2的开方。
  20. xxl-job本地部署到容器部署到k8s部署

热门文章

  1. iOS播放器、Flutter高仿书旗小说、卡片动画、二维码扫码、菜单弹窗效果等源码
  2. jeecg-boot:将单表列表页作为弹框,并且传递参数到解决方案(场景商品到明细信息维护)
  3. wltp和nedc续航差多少_WLTP续航和NEDC续航差多少?
  4. 学习编程应该最基本的是学习什么
  5. luogu 3374
  6. Mac笔记本鼠标滚动方向(老忘记在哪儿记录一下吧)
  7. 异构网络中基于元图的推荐——FMG
  8. 快来天津科技大学找我玩
  9. 学神经网络应该看看哪些书,神经网络相关书籍
  10. PayPal 如何付款