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

力扣 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.xdnf.cn/news/16548.html

      相关文章:

    • 第四科学范式(数据密集型科学):科学发现的新范式
    • Qt C++动态库SDK在Visual Studio 2022使用(C++/C#版本)
    • IIS发布.NET9 API 常见报错汇总
    • Java面试实战:从基础到架构的全方位技术交锋
    • add新增管理员功能、BaseController类的简介--------示例OJ
    • PDF转图片实用指南:如何批量高效转换?
    • AI入门学习-模型评估示例讲解
    • Deja Vu: 利用上下文稀疏性提升大语言模型推理效率
    • 【java】 IntelliJ IDEA高效编程设置指南
    • Day06–哈希表–242. 有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和
    • EMCCD相机与电可调变焦透镜的同步控制系统设计与实现
    • 基于Matlab自适应阈值分割算法的图像处理研究
    • 《Java 程序设计》第 7 章 - 继承与多态
    • 嵌入式学习日志————对射式红外传感器计次
    • 高速采集卡FPGA设计方案及代码
    • 【测试报告】博客系统(Java+Selenium+Jmeter自动化测试)
    • maven命令详解
    • Element表格单元格类名动态设置
    • 可控、安全、可集成:安防RTSP|RTMP视频播放模块工程实践参考
    • Android基础(一) 运行HelloWorld
    • 如何解决pip安装报错ModuleNotFoundError: No module named ‘ipywidgets’问题
    • 区块链共识机制与联邦学习
    • 《杜甫传》读书笔记与经典摘要(三)流亡与走向人民
    • Java面试题及详细答案120道之(081-100)
    • 电商项目_核心业务_数据归档
    • 计算机网络:(十二)传输层(上)运输层协议概述
    • 【测试报告】玄机抽奖系统(Java+Selenium+Jmeter自动化测试)
    • KNN 算法中的各种距离:从原理到应用
    • PandasAI连接LLM进行智能数据分析
    • Tkinter美化 - 告别土味Python GUI