首页 > 其他分享 >字典树【Trie】

字典树【Trie】

时间:2023-11-04 12:00:22浏览次数:28  
标签:ch Trie 编号 字符串 节点 字典

字典树【Trie】

一种能够快速插入和查询字符串的多叉树结构
节点的编号各不相同,根节点编号为0,其它节点用来标识路径,还可以标记单词插入的次数。边标识字符
Tier维护字符串的集合,支持2种操作:

  1. 向集合中拆入一个字符串, void insert(char c)
  2. 向集合中查询一个字符串,int query(char c)

建字典树

儿子数组 cha[p][j]:存储从节点 p 沿着 j 这条边走到的子节点

  • 边为26个小写字母(a-z)对应的映射值为:0 - 25
  • 每个节点最多可以有 26 个分叉

例如:ch[0][2] = 1,ch[1][0] = 2,ch[2][19] = 3

计数数组 cnt[p] 存储以节点 p 结尾的单词的插入次数

节点编号 index:用来给节点编号

注意事项

  1. 空 Trie 仅有一个 root 节点,编号为 0
  2. 从 root 节点开始插,枚举字符串的每个字符
  • 如果有儿子,则 p 指针走到儿子
  • 如果没有,则先创建儿子,p 指针再走到儿子
  1. 在单词结束点记录插入次数

标签:ch,Trie,编号,字符串,节点,字典
From: https://www.cnblogs.com/aclq/p/17809153.html

相关文章

  • AI问答:关于字符串匹配算法的区别及应用场景,哈希/kmp/字典树/AC自动机
    1. 哈希(Hashing):哈希是一种将字符串转换为唯一标识符的技术,通常用于字符串的快速查找和比较。实现难度相对较低,但需要处理哈希冲突的问题。哈希在处理大量数据的查找和比较问题时非常实用。2. KMP(Knuth-Morris-Pratt):KMP 是一种用于字符串匹配的算法,特别适用于查找子串在主串中的......
  • Oracle字典表
    --查询某个表在哪些存储过程中被调用select*fromuser_sourceewheree.TYPE='PROCEDURE'andupper(e.TEXT)like'%%';--查看表的创建日期selectCREATED,LAST_DDL_TIME,s.*fromuser_objectsswhereobject_name=upper('ABC');--Oracle查询某个字段名出现在哪些表中SE......
  • pycharm使用小技巧_json与字典
    pycharm控制台打印的数据键值对都是双引号,则是数据的格式json键值对都是单引号,则是数据的格式字典示例代码如下:importjsonfromrandomimportrandint""""需求:用户注册页面,手机号唯一,通过需要手机号进行注册"""#定义一个json字符窜register_data='{"name"......
  • HanLP — Aho-Corasick DoubleArrayTire 算法 ACDAT - 基于双数组字典树的AC自动机
    双数组字典树能在O(1)(1是模式串长度)时间内高速完成单串匹配,并且内存消耗可控,然而软肋在于多模式匹配。如果要匹配多个模式串,必须先实现前缀查询,然后频繁截取文本后缀才可多匹配。比如ushers、shers、hers…这样一份文本要回退扫描多遍,性能较低。既然AC自动机的goto表本身就是一......
  • Python中的字典的循环和嵌套
     字典进阶操作--循环和嵌套dic={"赵四":"特别能歪嘴","刘能":"老,老四啊...","大脚":"跟这个和那个搞对象","大脑袋":"瞎折腾....",}1.可以用for循环,直接拿到keyforkeyindic:print(key,dic[key])......
  • c# Dictionary 字典与线程安全字典的基本使用
    在C#中,字典(Dictionary)是一种特殊的集合,用于存储键/值对。这是一种关联数组,其中每个元素都包含一个键(Key)和一个值(Value)。下面是一个简单的C#字典的例子://字典:泛型;key-value,增删查改都很快;//字典如果数据量太大的话,也会影响效率.//字典......
  • com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key
    问题:连接MySQL数据库时抛出异常信息:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:PublicKeyRetrievalisnotallowed一开始aplication.yml配置如下所示:spring:application:name:service-provider-sentinel9999datasource:driver-cl......
  • 整型数组按照字典序排序
    整型数组按照字典序排序输入...0,1,2,3,5,7,8,1001,109...输出...0,1,10,1001,2,3,5,7,8Collections.sort(list,newComparator<Integer>(){@Overridepublicintcompare(Integero1,Integero2){StringA=o1+"";StringB=......
  • EF出现错误:An error occurred while updating the entries. See the inner exception
    问题:EF出现错误Anerroroccurredwhileupdatingtheentries.Seetheinnerexceptionfordetails场景:适用Excel批量导入数据时,提示了以上错误解决思路:1、查看是否有重复的主键2、是否有不可为空的字段没有赋值3、字段内容是否超出长度限制......
  • 如何按值对字典进行排序?
    内容来自DOChttps://q.houxu6.top/?s=如何按值对字典进行排序?我从一个数据库中的两个字段读取一个字典的值:一个字符串字段和一个数字字段。字符串字段是唯一的,所以它是字典的键。我可以按键进行排序,但是我如何根据值进行排序呢?注意:我在这里阅读了StackOverflow问题如何......