【数据结构】通过Trie字典树实现敏感词过滤

本文介绍了如何使用Trie数据结构来实现敏感词过滤。通过创建TrieNode类和内部Node类构建基础模型,遍历添加敏感词,然后设计过滤方法替换敏感词。在测试过程中发现,如果敏感词中插入空格或其他字符,原有方法无法有效过滤,经过优化,解决了这个问题。
摘要由CSDN通过智能技术生成

一、基本概念

       Trie字典树主要用于存储字符串,Trie的每个Node保存一个字符。用链表来描述的话,就是一个字符串就是一个链表。每个Node都保存了它的所有子节点。

       如下图所示,根节点不包含任何信息。每个节点表示一个字符串中的字符,从根节点到红色节点的一条路径表示一个字符串。红色节点不一定是叶子节点。

       使用Trie这种数据结构存储字符串,查询每个字符串的时间复杂度,只和该字符串长度相同。

 

二、代码实现

1.首先将基本模型构建出来

     创建一个名为TrieNode的类,该类就是我们需要去完善形成的一个Trie的数据结构类。其中有一个Node内部类,Node用来代表Trie中的每一个节点,其中isWord表示首节点到该节点的路径是一个单词,next指向了下一个节点。


public class TrieNode {
    //是不是敏感词的结尾
    private boolean end = false;
    //Character代表当前节点的字符,TrieNode代表了下一个节点
    private Map<Character, TrieNode> subNodes = new HashMap<>();

    public void addSubNode(Character key, TrieNode node) 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值