美文网首页程序员
屏蔽字检测 Trie树 及 复杂度分析

屏蔽字检测 Trie树 及 复杂度分析

作者: cc_Jumper | 来源:发表于2020-04-24 16:55 被阅读0次

N: 屏蔽字个数。 M:表示组成屏蔽字的字符集的数量 WL:屏蔽字的最大长度 L:输入检测语句的长度
inPut: 句子:我罗是有个志向的,那天看到特朗普就揍他一顿
words: "特朗普","罗志祥","志向","揍"
relpace: ""
则M = 8, WL = 3, N = 4,L = 21
output: 我罗是有个
的,那天看到他一顿

----- 普通屏蔽字检测 -----
时间复杂度:O(L * N * WL) ex:21 * 4 * 3 = 264 100 * 300 * 3 = 90000
空间复杂度: O(1)

----- Trie树 屏蔽字检测 -----
时间复杂度: O(N * WL) + 0(L * WL) = O((N + L) *WL) ex:(21 + 4) * 3 = 75。 (100 + 300) * 3 = 1200
空间复杂度: O(WL * N * M)
由于Dict来存Node的children节点,单个字符作为key,这样子的话Dict里面不需要一开始不需要初始化成{M1:Node, M2:Node, ..., Mm:Node}
而是Dict都是空的,只有需要insert进入的时候再懒加载创建,并放进去,考虑到最极端的情况,就是N个word没有任何交叉,且长度都为最大WL,此时需要
的节点数量为:WL * N 故空间复杂度降低到 WL * N

sentence: abcdefghijklmnopqrstuvwxyz
构建一个trie树
for (int i=0; i<L; i++)
step, match = trie.walk(i)
i += step;
if (!match) {
NSLog(@"not match:%@", s[i:i+step]);
} else {
s[i:i+step] = @"***";
}

相关文章

  • 屏蔽字检测 Trie树 及 复杂度分析

    N: 屏蔽字个数。 M:表示组成屏蔽字的字符集的数量 WL:屏蔽字的最大长度 L:输入检测语句的长度inPut: ...

  • 前缀树(字典树/Trie)Java实现和应用

    摘要: 前缀树,字典树,插入查询逻辑,Java实现,时间复杂度分析 前缀树介绍 Trie树又被称为前缀树、字典树,...

  • 数据结构-Trie树

    Trie 树的定义: Trie 树,即字典树,又称前缀树,是一种多叉树结构。典型的应用是用于统计和排序大量的字...

  • 力扣 208 实现 Trie (前缀树)

    题意:实现Trie 思路:利用Trie的数据结构实现插入,查询,和prefix,具体见代码 思想:Trie 复杂度...

  • Immutable 源码解析 - List 对象

    什么是 Trie 查询每个条目的复杂度跟树中的元素个数无关 查询复杂度只跟深度有关 O(deep) 修改某个节点可...

  • 字典树

    字典树 Trie 在计算机科学中,Trie 又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字...

  • trie树

    文章内容来自 Trie树:应用于统计和排序Trie树 trie树又称:字典树、单词查找树、前缀树等,总之是一种树状...

  • 树结构之Trie

    1. 什么是trie树 1.Trie树 (特例结构树)Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈...

  • 实现 Trie

    数据结构之Trie树Trie树:应用于统计和排序

  • Trie树

    一、定义 Trie树,又称为单词查找树,是一种树形结构(Trie一词源于单词Retrieval-取出)。Trie树...

网友评论

    本文标题:屏蔽字检测 Trie树 及 复杂度分析

    本文链接:https://www.haomeiwen.com/subject/ihofwhtx.html