当前位置: 首页 > news >正文

LeetCode、208. 实现 Trie (前缀树)【中等,自定义数据结构】

文章目录

  • 前言
  • LeetCode、208. 实现 Trie (前缀树)【中等,自定义数据结构】
    • 题目链接与分类
    • 思路
  • 资料获取

前言

博主介绍:✌目前全网粉丝2W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。

涵盖技术内容:Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。

博主所有博客文件目录索引:博客目录索引(持续更新)

视频平台:b站-Coder长路


LeetCode、208. 实现 Trie (前缀树)【中等,自定义数据结构】

题目链接与分类

题目链接:LeetCode、208. 实现 Trie (前缀树)

分类:02数据结构/树/字典树(前缀树)


思路

思路:数组来模拟前缀树,对于相同的前缀统一使用一份来存储。在代码中使用了通用的代码:searchPrefix,用于去查找单词的前缀。

复杂度分析:

  • 初始化:时间复杂度O(1);空间复杂度O(S,字符串长度)
  • 其他操作:时间复杂度O(S,字符串长度);空间复杂度O(S,字符串长度)
class TrieNode {boolean isWord = false;TrieNode[] children = new TrieNode[26];public TrieNode(){}
}class Trie {TrieNode root;public Trie() {root = new TrieNode();}public void insert(String word) {TrieNode curr = root;for (char c : word.toCharArray()) {if (curr.children[c - 'a'] == null) curr.children[c - 'a'] = new TrieNode();curr = curr.children[c - 'a'];}curr.isWord = true;}public boolean search(String word) {TrieNode node = searchPrefix(word);return node != null && node.isWord;}public boolean startsWith(String prefix) {return searchPrefix(prefix) != null;}//通用方法public TrieNode searchPrefix(String prefix) {TrieNode node = this.root;for (char ch: prefix.toCharArray()) {int index = ch - '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);*/

image-20240212171622107


资料获取

大家点赞、收藏、关注、评论啦~

精彩专栏推荐订阅:在下方专栏👇🏻

  • 长路-文章目录汇总(算法、后端Java、前端、运维技术导航):博主所有博客导航索引汇总
  • 开源项目Studio-Vue—校园工作室管理系统(含前后台,SpringBoot+Vue):博主个人独立项目,包含详细部署上线视频,已开源
  • 学习与生活-专栏:可以了解博主的学习历程
  • 算法专栏:算法收录

更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅


整理者:长路 时间:2024.2.12

http://www.lryc.cn/news/299329.html

相关文章:

  • java数据结构与算法刷题-----LeetCode151. 反转字符串中的单词
  • 《Java 简易速速上手小册》第8章:Java 性能优化(2024 最新版)
  • mysql全国省市县三级联动创表sql(一)
  • go面试题--使用两个goroutine交替打印数字与字母
  • DolphinScheduler-3.2.0 集群搭建
  • 07:Kubectl 命令详解|K8S资源对象管理|K8S集群管理(重难点)
  • 【设计模式】springboot3项目整合模板方法深入理解设计模式之模板方法(Template Method)
  • Windows搭建docker+k8s
  • 年假作业10
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • 【生产实测可用】Redis修改集群弱口令
  • 备战蓝桥杯---图论基础理论
  • [office] excel2003进行可视性加密的方法 #媒体#其他#知识分享
  • 算法沉淀——分治算法(leetcode真题剖析)
  • Qt 进程守护程序
  • Linux_文件系统
  • 算法沉淀——链表(leetcode真题剖析)
  • Flink从入门到实践(一):Flink入门、Flink部署
  • python分离字符串 2022年12月青少年电子学会等级考试 中小学生python编程等级考试二级真题答案解析
  • Excel练习:折线图突出最大最小值
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之MenuItem组件
  • Mockito测试框架中的方法详解
  • Atcoder ABC339 A - TLD
  • 企业级DevOps实战
  • C++中的new和delete
  • rtt设备io框架面向对象学习-dac设备
  • 腾讯云幻兽帕鲁服务器配置怎么选择合适?
  • 796. 子矩阵的和
  • 如何在 Python 中处理 Unicode
  • CSDN文章导出PDF整理状况一览