文章目录
- 前言
- 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);*/
资料获取
大家点赞、收藏、关注、评论啦~
精彩专栏推荐订阅:在下方专栏👇🏻
- 长路-文章目录汇总(算法、后端Java、前端、运维技术导航):博主所有博客导航索引汇总
- 开源项目Studio-Vue—校园工作室管理系统(含前后台,SpringBoot+Vue):博主个人独立项目,包含详细部署上线视频,已开源
- 学习与生活-专栏:可以了解博主的学习历程
- 算法专栏:算法收录
更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅
整理者:长路 时间:2024.2.12