首页 > 其他分享 >字典树

字典树

时间:2025-01-23 08:59:06浏览次数:1  
标签:节约 前缀 int 字符串 存储空间 字典

概念:字典树(TrieTree),是一种树形结构,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串,如01字典树)。主要思想是利用字符串的公共前缀来节约存储空间。很好地利用了串的公共前缀,节约了存储空间。字典树主要包含两种操作,插入和查找。

void search(char a[])
{
    int l=strlen(a);
    int p=1;
    for(int i=0;i<l;i++)
    {
        int ch=a[i]-'a';
        if(!tree[p][ch])    tree[p][ch]=++tot;
        p=tree[p][ch];
    }
    ed[p]++;
}
int ans;
int find(char a[])
{
    int l=strlen(a);
    int p=1;
    for(int i=0;i<l;i++)
    {
        int ch=a[i]-'a';
        p=tree[p][ch];
        if(p==0)            
        {
            return ans;
        }
        ans+=ed[p];         
    }
}

标签:节约,前缀,int,字符串,存储空间,字典
From: https://www.cnblogs.com/-include-lmt/p/18687068

相关文章

  • 字典Dictionary.Add不是把新的元素插入到字典最后面
    些时候在Dictionary中Add添加键值对后,并不是直接加到Dictionary的最后面,遍历时元素的顺序不是元素添加的先后顺序。 因为字典Dictionary并不是有序存储的,在删除中间某个元素后,会留下一个空位,后续添加元素会填到这个空位,导致顺序“错乱”。Dictionary实现原理参考:浅谈C#Dictio......
  • 差异编码(Delta Encoding) 和 字典压缩(Dictionary Encoding)
    1.差异编码(DeltaEncoding):倒排列表中可能会采用差异编码,即存储相邻文档ID之间的差值,而不是直接存储每个文档ID,这样可以进一步压缩空间。2.字典压缩(DictionaryEncoding):对于倒排列表中的文档ID,可以使用字典进行压缩,进一步减少存储需求。举例学习和说明这两个方法 差异......
  • Python中的字典优化:如何高效使用`defaultdict`和`Counter`
    《PythonOpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界在Python编程中,字典(dict)是最常用的数据结构之一,广泛应用于数据存储、检索和操作。然而,随着数据规模的增大和复杂性的提升,传统字典在某些场景下......
  • 科普文:算法和数据结构系列【高效的字符串检索结构:字典树Trie树原理、应用及其java示例
    概叙科普文:算法和数据结构系列【算法和数据结构概叙】-CSDN博客科普文:算法和数据结构系列【非线性数据结构:树Tree和堆Heap的原理、应用、以及java实现】-CSDN博客科普文:算法和数据结构系列【树:4叉树、N叉树】_动态维护四叉树-CSDN博客科普文:算法和数据结构系列【二叉树总结......
  • 科普文:算法和数据结构系列【死磕字典树:字典树的升级版三叉树Ternary Search Tree优化
    概叙科普文:算法和数据结构系列【死磕字典树:来一个英文字母游戏】-CSDN博客科普文:算法和数据结构系列【高效的字符串检索结构:字典树Trie树原理、应用及其java示例代码解读】-CSDN博客‌原理‌:Trie树利用字符串之间的公共前缀来减少不必要的字符串比较,从而提高查询效率。每个......
  • 字典学习方法
    字典学习方法是机器学习中的一种技术,它旨在从数据中学习一个有效的字典,以便更好地表示或分类数据。以下是对字典学习方法的详细介绍:一、定义与原理字典学习方法通过从训练数据中学习一个过完备的字典矩阵,使得数据可以表示为字典中少量原子的线性组合。这些原子可以看作是数据的......
  • 字典的创建与删除
    笔记#(1)创建字典d={10:'cat',20:'dog',30:'pet',20:'zoo'}print(d)#key相同时,value值进行了覆盖#(2)zip函数lst1=[10,20,30,40]lst2=['cat','dog','pet','zoo','car']zipobj=zip(ls......
  • 给定一个字符串,对该字符串进行删除操作,保留 k 个字符且相对位置不变,使字典序最小
    这是一个经典的编程问题,可以用单调栈的方法高效解决。以下是解题步骤和代码实现:问题描述给定一个字符串s和一个整数k,要求删除字符串中的一些字符,最终保留k个字符,且相对顺序不变,使得结果字符串字典序最小。解题思路单调栈维护最小字典序:使用一个栈来维护当前......
  • 一篇文章理解字典
    Python3字典详解字典(dict)是Python中的一种内置数据类型,用于存储键值对(key-valuepairs)。它是一个无序、可变且唯一的集合,键必须是不可变类型(如字符串、数字、元组),而值可以是任意类型。1.字典的基本特点无序性:从Python3.7起,字典的插入顺序被保留(即按照插入顺序遍历),......
  • list和字典哪个性能高?for循环下哪个性能高?为啥?
    在选择数据结构时,性能取决于具体的操作和使用场景。列表(List)和字典(Dictionary)是两种常见的数据结构,它们有不同的性能特性。以下是对这两种数据结构在不同操作下的性能比较,特别是针对for循环下的性能表现。列表(List)列表是一种有序的集合,通常用于存储一组元素,并按顺序访问这......