【leetcode hot 100 208】实现Trie(前缀树)

news/2025/3/22 10:45:09/

解法一:字典树

Trie,又称前缀树或字典树,是一棵有根树,其每个节点包含以下字段:

  • 指向子节点的指针数组 children。对于本题而言,数组长度为 26,即小写英文字母的数量。此时 children[0] 对应小写字母 a,children[1] 对应小写字母 b,…,children[25] 对应小写字母 z。
  • 布尔字段 isEnd,表示该节点是否为字符串的结尾。
    在这里插入图片描述
class Trie {private Trie[] children;private boolean isEnd;public Trie() {children = new Trie[26];isEnd = false;}public void insert(String word) {Trie node = this;  //Trie node = this 而不是newfor(int i=0; i<word.length(); i++){char ch = word.charAt(i);int num = ch - 'a'; // 注意这里要判断node.children[num] == null)if(node.children[num] == null){node.children[num] = new Trie();}node = node.children[num];}node.isEnd = true;}public boolean search(String word) {Trie node = searchprefix(word);return node!=null && node.isEnd;}public boolean startsWith(String prefix) {return searchprefix(prefix)!=null;}public Trie searchprefix(String prefix){Trie node = this;for(int i=0; i<prefix.length(); i++){char ch = prefix.charAt(i);int num = ch - 'a';if(node.children[num]==null){return null;}node = node.children[num];}return node;}
}

注意:

  • 在插入算法中,当node.children[num] == null时(node.children[num] != null说明有相同前缀),才新建nodenode.children[num] = new Trie()
  • Trie node = this,而不是Trie node = new Trie()

http://www.ppmy.cn/news/1581119.html

相关文章

前端引擎革命:界面量子化渲染架构

引言&#xff1a;DOM坍塌后的次元跃迁 Chrome V8引擎实现98% ES2023规范支持&#xff0c;React 19并发渲染突破百万节点秒级更新。Shopify Hydrogen框架首屏用时降至380ms&#xff0c;Next.js 14服务端组件缓存命中率93%。Figma实时协同引擎支持500人同时操作&#xff0c;WebA…

个人作品集模板!除了Figma还可以选择什么软件?

在竞争激烈的设计行业中&#xff0c;作品集不仅是设计师能力的直观体现&#xff0c;更是打开职业机会的“金钥匙”。一份优秀的作品集需要兼具视觉吸引力、逻辑清晰度和专业深度。本文将从设计原则、工具选择到排版技巧&#xff0c;为你提供系统化的创作指南&#xff0c;并推荐…

材质 × 碰撞:Threejs 物理引擎的双重魔法

材质 在物理引擎中&#xff0c;材质(Material)用于描述物体的物理属性&#xff0c;例如摩擦力、弹性等。 const material new CANNON.Material("materialName");CANNON.Material&#xff1a; 物理材质&#xff0c;用于模拟物体之间的摩擦力、弹性等物理属性。 ma…

算法题(103):数独

审题&#xff1a; 本题需要我们找出数独的解&#xff0c;并打印出来 时间复杂度分析&#xff1a; 本题是9*9的数独格子&#xff0c;所以数据量小于25&#xff0c;可以使用2^n的算法 思路&#xff1a; 方法一&#xff1a;深度优先搜索 首先确定搜索及插入策略&#xff1a; 我们采…

[特殊字符] 2025蓝桥杯备赛Day10——B2120 单词的长度

&#x1f50d; 2025蓝桥杯备赛Day10——B2120 单词的长度 &#x1f680; 题目速览 题目难度&#xff1a;⭐️ 适合掌握字符串基本操作 考察重点&#xff1a;字符串分割、空格处理、标点符号处理 B2120 单词的长度 题目描述 输入一行单词序列&#xff0c;相邻单词之间由 …

鸿蒙开发工程师简历项目撰写全攻略

一、项目结构的黄金法则 建议采用「41」结构&#xff1a; 项目背景&#xff08;业务价值&#xff09;技术架构&#xff08;鸿蒙特性&#xff09;核心实现&#xff08;技术难点&#xff09;个人贡献&#xff08;量化成果&#xff09;附加价值&#xff08;延伸影响&#xff09; …

机器学习算法实战——天气数据分析(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​ 1. 引言 天气数据分析是气象学和数据科学交叉领域的一个重要研究方向。随着大数据技术的发展&#xff0c;气象数据的采集、存储和分…

10-STL、位运算、常用函数库

1-STL vector vector是变长数组 //定义vector vector<int>a;//第一维长233&#xff0c;第二维长度动态变化 vector<int>b[233];//自定义的结构体类型也可以保存在vector中 struct res{...}; vector<rec>c;//函数 a.size();//返回vector的实际长度&#xf…