新闻详情

新闻详情

首页 / 资讯中心 / 详情

元宝 LeetCode 208. 实现 Trie (前缀树) Java实现

发布时间:2026/10/2 20:40:13来源:尧图网络
元宝    LeetCode 208. 实现 Trie (前缀树) Java实现
LeetCode 208. 实现 Trie前缀树Java 实现题目简述实现一个 Trie前缀树支持三种操作操作 含义“insert(word)” 插入字符串“search(word)” 查找完整字符串是否存在“startsWith(prefix)” 查找是否有以 prefix 为前缀的字符串核心思想每个节点包含一个“children[26]”对应 a~z和一个“isEnd” 标记表示是否是某个单词的结尾。root / | \ a b ... / \ p .../p ← isEnd true (“app”)Java 实现class Trie {// Trie 节点定义 private static class TrieNode { TrieNode[] children new TrieNode[26]; boolean isEnd; // 标记是否为某个单词的结尾 } private final TrieNode root; // 初始化 Trie public Trie() { root new TrieNode(); } // 插入单词 public void insert(String word) { TrieNode node root; for (char c : word.toCharArray()) { int index c - a; if (node.children[index] null) { node.children[index] new TrieNode(); } node node.children[index]; } node.isEnd true; // 标记单词结尾 } // 查找完整单词是否存在 public boolean search(String word) { TrieNode node searchPrefix(word); return node ! null node.isEnd; } // 查找是否有以 prefix 为前缀的单词 public boolean startsWith(String prefix) { return searchPrefix(prefix) ! null; } // 公共辅助方法沿 prefix 走到最后一个节点 private TrieNode searchPrefix(String prefix) { TrieNode node root; for (char c : prefix.toCharArray()) { int index c - a; if (node.children[index] null) { return null; } node node.children[index]; } return node; }}使用示例Trie trie new Trie();trie.insert(“apple”);trie.search(“apple”); // truetrie.search(“app”); // false“app” 不是完整单词trie.startsWith(“app”); // truetrie.insert(“app”);trie.search(“app”); // true复杂度分析操作 时间复杂度 空间复杂度“insert” O(m)m 为单词长度 O(m)“search” O(m) O(1)“startsWith” O(m) O(1)关键要点“isEnd” 标记不能省区分““app”” 是前缀还是完整单词2.“searchPrefix” 抽取公共逻辑“search” 和“startsWith” 都复用代码更简洁3. 数组大小固定 26因为题目限定只有小写字母 a~z4. 如果用 HashMap 代替数组可以支持任意字符集Unicode但常数开销更大常见变体支持“delete” 操作需要回溯标记较复杂统计以某前缀开头的单词数量在节点加“count” 字段LeetCode 211. 添加与搜索单词在 search 中加入“.” 通配符匹配需 DFSLeetCode 212. 单词搜索 IITrie 回溯的经典结合需要我补充其中某个变体的实现吗
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

OmniAgent开发者指南:如何为Agent编写自定义工具与扩展,从Tool基类到Manifest插件 2026/10/2 21:39:07

OmniAgent开发者指南:如何为Agent编写自定义工具与扩展,从Tool基类到Manifest插件

OmniAgent开发者指南:如何为Agent编写自定义工具与扩展,从Tool基类到Manifest插件 【免费下载链接】OmniAgent An agent capable of self-evolving and dynamically hardening security 项目地址: https://gitcode.com/gh_mirrors/om/OmniAgent O…

阅读更多 →
远程app下载方法 远程操控软件推荐无界趣连2.0 2026/10/2 21:38:42

远程app下载方法 远程操控软件推荐无界趣连2.0

想要实现高效的跨设备远程操控,掌握正确的远程APP下载方法是第一步,正规靠谱的远程APP下载方法能帮大家避开捆绑软件、盗版工具,轻松解锁稳定流畅的远程操控体验。综合对比各类工具后,推荐大家下载使用无界趣连2.0,下载…

阅读更多 →
MacBook本地跑33B视频生成模型:h3.c封装ComfyUI完整工程实践 2026/10/2 21:38:26

MacBook本地跑33B视频生成模型:h3.c封装ComfyUI完整工程实践

上个月我干了一件有点疯狂的事:把 antirez 那份手写的 h3.c 推理代码,封装成了一个 ComfyUI 自定义节点,然后在 MacBook 上把一个 33B 参数级别的视频生成模型跑了起来。先说结论:这台机器没有大显存显卡,也没有任何云…

阅读更多 →
OpenAPI 自动生成 DeepSeek 工具,解决函数调用 JSON 手写难题 2026/10/2 21:38:25

OpenAPI 自动生成 DeepSeek 工具,解决函数调用 JSON 手写难题

这些年接过的后端服务越来越多,手头维护的 REST API 随便一数就是几十个,每次要接大模型 Function Calling 的时候,最头疼的就是“写 Tools”。一个接口一个接口地手写 JSON Schema,描述参数、写含义、想 example,写完…

阅读更多 →
为什么Amicro的动画如此丝滑?揭秘5组Spring物理预设(snappy/bouncy/smooth/gentle/stiff) 2026/10/2 21:38:24

为什么Amicro的动画如此丝滑?揭秘5组Spring物理预设(snappy/bouncy/smooth/gentle/stiff)

为什么Amicro的动画如此丝滑?揭秘5组Spring物理预设(snappy/bouncy/smooth/gentle/stiff) 【免费下载链接】Amicro--Micro-transitions- 项目地址: https://gitcode.com/gh_mirrors/am/Amicro--Micro-transitions- Amicro&#xff08…

阅读更多 →
Next.js与LangGraph.js实战:构建稳定可控的简历优化AI Agent 2026/10/2 21:38:23

Next.js与LangGraph.js实战:构建稳定可控的简历优化AI Agent

干过简历工具这类项目的人应该都有同感:需求看着简单,无非是"帮我看看简历"、"按这个JD优化一下"、"给一段经历润色",可一旦要做得像回事,背后就是一连串的脏活。解析格式、提取结构化信息、理解岗…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉