当前位置: 首页 > 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.lryc.cn/news/601460.html

      相关文章:

    • 数据江湖的“三国演义”:数据仓库、数据湖与湖仓一体的全景对比
    • 区块链:工作量证明与联邦学习
    • 神经网络知识讨论
    • 【旧文】Adobe Express使用教程
    • 7月27日星期日今日早报简报微语报早读
    • 数据赋能(340)——技术平台——共享平台
    • Spring之【Bean的生命周期】
    • 视频转GIF工具,一键批量制作高清动图
    • GIt学习——分布式版本控制工具
    • Triton IR
    • Python折线图
    • Java面试新趋势:云原生与新兴框架实战解析
    • 零基础学习性能测试第五章:Tomcat的性能分析与调优-Tomcat原理,核心配置项,性能瓶颈分析,调优
    • MySQL ROUTER安装部署
    • Java面试实战:安全框架与大数据技术深度解析
    • 深度解析 inaSpeechSegmenter:高效音频语音分割与检测开源工具
    • 基于 LSTM 与 SVM 融合的时间序列预测模型:理论框架与协同机制—实践算法(1)
    • maven命令详解
    • Redis C++客户端——命令使用
    • 《不只是接口:GraphQL与RESTful的本质差异》
    • Libevent(4)之使用教程(3)配置
    • PHP框架之Laravel框架教程:3. 数据库操作(简要)
    • net8.0一键创建支持(RabbitMQ)
    • 积分兑换小程序Java
    • Torchv Unstrustured 文档解析库
    • Matplotlib(二)- Matplotlib简单绘图
    • 在docker中安装frp实现内网穿透
    • 【数据结构与算法】数据结构初阶:详解排序(二)——交换排序中的快速排序
    • 【51单片机和数码管仿真显示问题共阴共阳代码】2022-9-24
    • 算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现