字典树 [Tire]

数据结构、算法总述:数据结构/基础算法 C/C++_禊月初三的博客-CSDN博客


字典树,英文名 trie。顾名思义,就是一个像字典一样的树。 

Trie 树是一种多叉树的结构,它的特点是所有的字符都存储在树的分支上,并且从根节点到某个叶节点的路径上的字符组成了一个字符串。

算法模板:

int son[N][26], cnt[N], idx;
// 0号点既是根节点,又是空节点
// son[][]存储树中每个节点的子节点
// cnt[]存储以每个节点结尾的单词数量// 插入一个字符串
void insert(string str)
{int p = 0;for (int i = 0; str[i]; i ++ ){int u = str[i] - 'a';if (!son[p][u]) son[p][u] = ++ idx;p = son[p][u];}cnt[p] ++ ;
}// 查询字符串出现的次数
int query(string str)
{int p = 0;for (int i = 0; str[i]; i ++ ){int u = str[i] - 'a';if (!son[p][u]) return 0;p = son[p][u];}return cnt[p];
}

题目:

1455. 检查单词是否为句中其他单词的前缀 - 力扣(LeetCode)icon-default.png?t=N7T8https://leetcode.cn/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence/description/

Trie树的主要优点是:

  • 搜索效率高:搜索一个字符串的时间复杂度与字符串的长度成线性关系,即O(L),其中L是字符串的长度。
  • 插入和删除效率高:在Trie树中插入或删除一个字符串也具有O(L)的时间复杂度。
  • 节省空间:Trie树不像数组那样需要为所有可能的字符串预留空间,因此它可以更有效地利用内存。

Trie树的缺点是:

  • 空间复杂度较高:由于每个字符都可能是一个节点的分支,因此对于包含大量字符串的数据集,Trie树可能会占用较多的内存。
  • 节点数量较多:在Trie树中,节点数量通常比字符串的数量多,因为在树中,每个字符串的每个字符都对应一个节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/750874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是VR应急预案演练虚拟化|VR体验馆加盟|元宇宙文旅

VR 应急预案演练虚拟化指的是利用虚拟现实(Virtual Reality,VR)技术进行应急预案演练的过程。在传统的应急预案演练中,人们通常需要在实际场地或模拟环境中进行演练,这可能存在一些限制,如成本高昂、场地受…

禅理“吃饭时吃饭,睡觉时睡觉”有多难?

吃饭时吃饭,睡觉时睡觉。这句是非常有名的禅理,简单的一句话透露了深刻内容。 电视剧《百年虚云》讲述了近代佛门宗师“虚云老和尚”一百二十年的传奇人生。他一生经历过道光,咸丰,同治,光绪,宣统&#xf…

Delphi7应用教程学习1.3【练习题目】:文本及悬停文字的显示

这个例子主要用到了btn的Hint 属性,Hint是提示的意思。 还有Delphi7还是很好用的,改变了的属性是粗体,默认没有改变的属性为细体。

吴恩达prompt 笔记2:迭代提示开发(Iterative Prompt Develelopment)

1 前言 我们很难在初次尝试中就设计出最佳的提示,因此需要根据ChatGPT的反馈进行分析,分析输出具体在哪里不符合期望,然后不断思考和优化提示。如果有条件的话,最好是利用批量的样本来改善提示,这样可以对你的优化结…

【Docker】Kong 容器化部署及配置参数说明

Kong标准软件基于Bitnami apache 构建。当前版本为2.4.58 你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取 配置文件地址: https://gitee.com/qingplus/qingcloud-platform qinghub…

elasticsearch常见问题:xpack.security.transport.ssl、unknown setting [node.master]

文章目录 引言I 安装elasticsearch1.1 安装Master Node1.2 安装Slave nodeII elasticsearch常见问题2.1 invalid configuration for xpack.security.transport.ssl2.2 server ssl configuration requires a key and certificate2.3 unknown setting [node.master]III Kibana启动…

两台 CentOS 之间传数据:SCP 方式

两台 CentOS 之间传数据:SCP 方式 文章目录 两台 CentOS 之间传数据:SCP 方式一、CentOS 安装 SSH 服务0、注意1、更新系统2、安装 OpenSSH 服务器3、启动 SSH 服务4、检查SSH服务状态5、配置防火墙6、测试 SSH 连接7、更改SSH默认端口(可选) 二、文件传…

Spring炼气之路(炼气一层)

目录 一、IOC 1.1 控制反转是什么? 1.2 什么是IOC容器? 1.3 IOC容器的作用 1.4 IOC容器存放的是什么? 二、DI 2.1 依赖注入是什么? 2.2 依赖注入的作用 三、IOC案例实现 3.1下载Maven 3.2 配置Maven中的settings.xml文…

【经验总结】ubuntu 20.04 git 上传本地文件给 github,并解决出现的问题

1. 在GitHub 上创建仓库 登录 GitHub 个人网站 点击 New 填写 Repository name, 以及 Description (optional) 选择 Public , 并添加 Add a README file 点击 Create repository github repository 创建成功 2. 设置SSH key 在本地 bash 运行:…

【PLC】现场总线和工业以太网汇总

1、 现场总线 1.1 什么是现场总线 1)非专业描述: 如下图:“人机界面”一般通过以太网连接“控制器(PLC)”,“控制器(PLC)”通过 “现场总线”和现场设备连接。 2)专业描述(维基百科) 现场总线…

【好玩的经典游戏】Docker环境下部署经典贪吃蛇小游戏

【好玩的经典游戏】Docker环境下部署经典贪吃蛇小游戏 前言一、相关介绍1.1 httpd介绍1.2 贪吃蛇小游戏介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍三、检查本地环境3.1 检查系统版本3.2 检查Docker服务状态四、下载httpd镜像五、创建httpd容器5.1 新建目录5.2 创建…

开源项目_搭建对象存储服务MinIO

1 简介 MinIO 是一个开源的对象存储服务器,与 Amazon S3 兼容。它的设计目标是为大规模数据工作负载提供简单、安全和高性能的存储。 以下是 MinIO 的一些主要特性:高性能,S3 兼容,安全性,可扩展性,开源&…

WAAP全站防护是什么,有什么作用

WAAP全站防护是基于风险管理和WAAP理念打造的安全方案,以“体系化主动安全” 取代安全产品的简单叠加,为各类Web、API业务等防御来自网络层和应用层的攻击,帮助企业全面提升Web安全水位和安全运营效率。 主要的特性在于: 1.全周…

学习Java十一天总结

目录 一、走进Java编程世界 二、变量、常量和运算符 三、if选择结构 四、switch选择结构 五、while循环结构 六、for循环结构 七、数组 八、深度循环结构 九、类和对象 十、类的无参方法 十一、类的带参方法 十二、字符串 一、走进Java编程世界 程序是为了让计算机…

C语言例:设 int a=11; 则表达式 a+=a-=a*a 的值

注&#xff1a;软件为VC6.0 代码如下&#xff1a; #include<stdio.h> int main(void) {int a11, b;b (aa-a*a); //a*a121 -->a-121结果为a-110 -->a-110结果为a-220printf("表达式aa-a*a 的值为&#xff1a; %d\n",b);return 0; } //优先级&#x…

常用pip命令

pip是一个现代的&#xff0c;通用的Python包管理工具。它提供了对Python包的查找、下载、安装、卸载的功能。 安装库 pip install package_name如果你想从特定的源安装&#xff0c;可以使用-i或--index-url选项&#xff1a; pip install package_name -i https://pypi.examp…

mac安装rust环境

mac安装rust环境 老规矩官方文档 1. mac官网使用的是脚本安装, 至于为啥没使用brew也没推荐俺也不太清楚 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh2. 一般来说中途会遇见有一个选择我这里选择直接回车默认安装(如果以后我研究明白的话会进行更新, 现在是…

Java-Thread 几种创建方式

Thread 创建线程的四种方法&#xff1a; 继承Thread类创建线程类&#xff0c;然后创建线程实例。实现Runnable借口创建线程目标类&#xff0c;然后创建线程实例。使用Callable和FutureTask创建异步任务&#xff0c;然后创建线程实例。通过线程池创建线程 Runnable异步任务的…

ADO .Net操作SQL Server数据库

//ADO.NET是.NET Framework提供的数据访问服务的类库&#xff0c;应用程序可以使用ADO.NET连接到这些数据源&#xff0c;并检索、处理和更新数据 //常用的数据源包括四种&#xff1a;&#xff08;1&#xff09;Microsoft SQL Server数据源&#xff1a;使用System.Data.SqlClien…

Python3 字符编解码

Python3 字符编解码 什么是字符编解码 编码&#xff1a;根据编码格式将人类认识的字符转为字节流。解码&#xff1a;根据编码格式将字节流转为人类认识的字符。 Python3 中的字符编码 utf-8为Python3的默认编码格式&#xff0c;可通过以下语句查看&#xff1a; import sys p…