【重点】【前缀树】208.实现Trie(前缀树)

题目
前缀树介绍:https://blog.csdn.net/DeveloperFire/article/details/128861092
什么是前缀树
在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。
trie 中的键通常是字符串,但也可以是其它的结构。trie 的算法可以很容易地修改为处理其它结构的有序序列,比如一串数字或者形状的排列。比如,bitwise trie 中的键是一串位元,可以用于表示整数或者内存地址。trie 树常用于搜索提示。如当输入一个网址,可以自动搜索出可能的选择。当没有完全匹配的搜索结果,可以返回前缀最相似的可能。
在这里插入图片描述

法1:迭代实现

在这里插入图片描述

class Trie {private Trie[] children;private boolean isEnd;public Trie() {this.children = new Trie[26];this.isEnd = false;}public void insert(String word) {Trie node = this;for (int i = 0; i < word.length(); ++i) {char c = word.charAt(i);int index = c - 'a';if (node.children[index] == null) {node.children[index] = new Trie();}node = node.children[index];}node.isEnd = true;}public boolean search(String word) {Trie node = searchPrefix(word);return node != null && node.isEnd == true;}public boolean startsWith(String prefix) {Trie node = searchPrefix(prefix);return node != null;}public Trie searchPrefix(String word) {Trie node = this;for (int i = 0; i < word.length(); ++i) {int index = word.charAt(i) - 'a';if (node.children[index] == null) {return null;}node = node.children[index];}return node;}
}/*** Your Trie object will be instantiated and called as such:* Trie obj = new Trie();* obj.insert(word);* boolean param_2 = obj.search(word);* boolean param_3 = obj.startsWith(prefix);*/

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

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

相关文章

分享一个冬日雪景

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 先看效果&#xff1a; 再看源码&#xff1a; <body><div id"container"><div id"layer-1" class…

windows如何环境搭建属于自己的Zblog博客并发布上线公网访问?

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员&#xff0c;自己搭建网站制作网页是绕…

我们在这些伦敦银时间周期上可以干什么?

做伦敦银投资的朋友&#xff0c;多数属于短线交易者&#xff0c;而短线交易者似乎有一种天生排斥较高时间周期的性格。其实较高的时间周期对我们伦敦银交易也是有好处的&#xff0c;下面我们就来讨论一下在伦敦银交易中我们可以用较高的时间周期来做些什么。 周线。以50周均线来…

由初中生实现的 Windows 12 网页版!

大家好&#xff0c;我是 Java陈序员。 这几天&#xff0c;逛 Github 的时候&#xff0c;看到了一个项目 win12 —— 仿 Windows12 网页版&#xff01;被它实现的页面功能震撼到了&#xff0c;大家可以一起来感受下&#xff01; 首先是登录页面。 登录后&#xff0c;再看看 …

Python学习笔记(一)Anaconda开发环境介绍与搭建

本文介绍了Python学习中常用的开发环境Anaconda&#xff0c;以及如何搭建和使用Anaconda。Anaconda是一个集成了许多模块和包管理工具的软件集合&#xff0c;可以管理Python解释器、模块和虚拟环境。文章还比较了conda和pip这两个包管理工具的区别&#xff0c;并介绍了Anaconda…

转移mysql中的数据

目录 1 mysqldump 2 将数据库中的数据转换为一个sql文件 3 执行sql文件 1 mysqldump 转移数据需要用到mysqldump。默认情况下mysqldump会自动被安装上&#xff0c;如果没有用不了&#xff0c;建议重新安装一下 参考 mysqldump 命令安装:_mob649e8162c013的技术博客_51…

Uniapp上传下载文件-不限制文件类型-附详细代码解析

Uniapp上传下载文件&#xff0c;不限制文件类型 1 知识小课堂1.1 Uniapp简介1.2 文件上传1.3 文件下载 2 Uniapp上传文件3 Uniapp 下载文件 1 知识小课堂 1.1 Uniapp简介 UniApp是一款跨平台应用程序开发框架&#xff0c;它允许开发者使用同一套代码来构建基于多个操作系统的应…

在Mac系统下为SpringBoot 配置Maven 【避坑完整版】

前提背景 电脑罢工&#xff0c;操作系统重装&#xff0c;不仅有大量的软件需要安装&#xff0c;还有很多开发环境需要配置。 就在今天配置Maven的时候各种坑&#xff0c;写下来供大家参考。 一、在讨论安装Maven前先安装一下JDK,方式很多&#xff0c;我这里有个比较快的办法&am…

Postman介绍和快速使用

Postman 是什么&#xff1f; Postman 是一个流行的API&#xff08;Application Programming Interface&#xff09;开发工具&#xff0c;它使得开发者可以很容易地创建、测试、共享和文档化API。Postman 提供了一个友好的用户界面&#xff0c;来发送HTTP请求&#xff0c;接收响…

prince2和Pmp哪个含金量高?

先来说下 prince 2 和 pmp 的区别 一、prince 2 是什么&#xff1f;跟PMP有什么区别&#xff1f; prince2 是 PRojetcts IN Controllde Environments 的简称&#xff0c;中文意思是受控环境下的项目&#xff0c;指的就是受控环境下的项目管理方法论。 如果知道 PMP 的可以简…

健康卤味思想引领市场新潮流,卤味市场迎来健康变革

健康卤味思想正在逐渐渗透到卤味市场中&#xff0c;引领着消费者对于卤味产品的选择和需求。这一变革不仅为消费者带来了更加健康、美味的卤味产品&#xff0c;也为卤味市场注入了新的活力。 一、健康卤味思想的兴起 随着消费者对于健康饮食的关注度不断提高&#xff0c;健康卤…

带你了解OpenCV4工业缺陷检测的六种方法

文章目录 OpenCV4工业缺陷检测的六种方法机器视觉缺陷检测1. 工业上常见缺陷检测方法方法一&#xff1a;基于简单二值图像分析实现划痕提取&#xff0c;效果如下&#xff1a;方法二&#xff1a;复杂背景下的图像缺陷分析&#xff0c;基于频域增强的方法实现缺陷检测&#xff0c…