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

力扣 hot100 Day57

208. 实现 Trie (前缀树)

Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。

请你实现 Trie 类:

  • Trie() 初始化前缀树对象。
  • void insert(String word) 向前缀树中插入字符串 word 。
  • boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。
  • boolean startsWith(String prefix) 如果之前已经插入的字符串 word 的前缀之一为 prefix ,返回 true ;否则,返回 false 。
//抄的
class Trie {
private:vector<Trie*> children;bool isEnd;Trie* searchPrefix(string prefix){Trie* node = this;for(char ch:prefix){ch -= 'a';if(node->children[ch]==nullptr){return nullptr;}node = node->children[ch];}return node;}public:Trie():children(26),isEnd(false){}void insert(string word) {Trie* node = this;for(char ch : word){ch-='a';if(node->children[ch]==nullptr){node->children[ch] = new Trie();}node = node->children[ch];}node->isEnd = true;}bool search(string word) {Trie* node = this->searchPrefix(word);return node!=nullptr&&node->isEnd;}bool startsWith(string prefix) {return this->searchPrefix(prefix)!=nullptr;}
};

这里相当于,实现了一个26叉数,数组索引方便一一调用,isEnd布尔值方便逻辑判断

searchPrefix函数作用是查找一个前缀对应的节点,逻辑就是类似于二叉树的查找,如果找不到返回nullptr,如果找到就返回对应节点

insert函数与searchPrefix类似,将查找转换为生成,如果有不操作,如果没有就new一个

search和startsWith函数就是searchPrefix函数的简单调用

      http://www.dtcms.com/a/300714.html

      相关文章:

    • 定点数的表示
    • 批量提取Word中的图片,保存指定文件夹!源码分享
    • 电子电气架构 --- 软件bug的管理模式
    • ADB Shell 命令
    • 配置Dockerhub镜像源使用教程
    • Java生态下的AI开发利器:LangChain4j与Spring AI深度对比与实战
    • Tensorflow实现手写数字识别
    • 使用Python绘制动态樱花
    • 记录一次薛定谔bug
    • 2116. 判断一个括号字符串是否有效
    • GitHub 趋势日报 (2025年07月26日)
    • 零基础学习性能测试第五章:JVM性能分析与调优-多线程机制与运行原理
    • Rust赋能智能土木工程革新
    • LeetCode第350题_两个数组的交集II
    • Rust Web 全栈开发(十二):构建 WebAssembly 应用
    • 图像处理:第二篇 —— 选择镜头的基础知识及对图像处理的影响
    • 大语言模型Claude 4简介
    • 【MySQL篇】:MySQL基础了解以及库和表的相关操作
    • Java学习-------桥接模式
    • 【三桥君】如何让AI从简单的记忆型模型进化为具备深度推理能力的‘学霸’?—— 解析提升AI推理能力的四大核心技术
    • 3.Linuxvim编辑器及快捷键的使用
    • 零基础学习性能测试第六章:性能难点-Jmeter实现海量用户压测
    • 【java】 IntelliJ IDEA高效编程设置指南
    • Photo Studio PRO 安卓版:专业级照片编辑的移动解决方案
    • iOS安全和逆向系列教程 第20篇:Objective-C运行时机制深度解析与Hook技术
    • Linux驱动21 --- FFMPEG 音频 API
    • bash的特性-常见的快捷键
    • 51核和ARM核单片机OTA实战解析(一)
    • 【机器学习深度学习】NLP评价指标 BLEU 和 ROUGE
    • 零基础学习性能测试第五章:性能瓶颈分析与调优-内存资源瓶颈分析与优化建议