字典树
title: 字典树 id: 6236756795a84f489800e1e816835c77 tags: [] date: 2000/01/01 00:00:00 updated: 2023/03/04 19:29:12 isPublic: true --#|[分隔]|#--
字典树
适用场景
给定多个字符串,作为字符串集合,判断这个字符串集合中,有多少个字符串是完全重复的,拿到重复最多的那个字符串,并获得这个字符串重复的次数。
算法原理
字典树会声明一个记录对象:root,把传进来的字符串拆分成单个字母,一个个记录到root中:
传入 'abc',最终的root结构如下所示
var root = {
a: {
b: {
c: {
repeatNum: 1,
}
}
}
}再传入 'abd',root结构变为如下所示
再分别传入 'abc'、'ab'、'ac'、he',root最终变为如下结构:
可见,root的会把每个字符串,拆分成单个字母,字母作为key添加到root中,如果某个字符是一个完整字符串的结尾,则这个字符中的repeatNum字段加1,repeatNum最终也就是这个字符串重复的次数。
root就是这些字符串的集合的字典树,字典树对象,就是维护root这个内部属性,并提供插入字符串和读取重复最多字符的方法。
代码实现
Last updated
Was this helpful?