字典树

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?