解题思路:

对每一个节点开一个数组,数组大小为26(26个字母),数组对应的下表就对应儿子节点的分母。

在插入一个字符串的函数insert中,程序的逻辑就是:遍历一次word中的每个字符,如果当前节点的next数组中,相应字符的子节点为null,那就在该数组位置上创建一个新的Trie对象。遍历完一个word之后,在最后的字符节点上,需要将其is_str置为true。

class Trie {
public:bool is_str; //用于标记该节点是否是单词末尾Trie *next[26];/** Initialize your data structure here. */Trie() {is_str = false;memset(next, 0, sizeof(next));  //每次新建一个Trie对象,都需要将其next数组清0}/** Inserts a word into the trie. */void insert(string word) {Trie *cur = this;for(auto w: word){if(cur->next[w - 'a'] == NULL){ //下一个节点不存在,就生成下一个Trie节点Trie* newnode = new Trie();cur->next[w - 'a'] = newnode;}cur = cur->next[w - 'a'];}cur->is_str = true;  //遍历完一个字符串之后,就将最后一个字符的is_str设为true,表明到达一个单词的最后一个字符}/** Returns if the word is in the trie. */bool search(string word) {Trie* cur = this;for(auto w: word){if(cur != NULL) cur = cur->next[w - 'a'];}return (cur != NULL && cur->is_str);  //判断是否是一个词,需要满足两个条件,非null和is_str为true}/** Returns if there is any word in the trie that starts with the given prefix. */bool startsWith(string prefix) {Trie* cur = this;for(auto w: prefix){if(cur != NULL) cur = cur->next[w - 'a'];}return (cur != NULL);  //只需判断是否为null}
};/*** Your Trie object will be instantiated and called as such:* Trie* obj = new Trie();* obj->insert(word);* bool param_2 = obj->search(word);* bool param_3 = obj->startsWith(prefix);*/

Leetcode 208. 实现 Trie (前缀树) 解题思路及C++实现相关推荐

  1. Leetcode 208.实现 Trie (前缀树)(Implement Trie (Prefix Tree))

    Leetcode 208.实现 Trie (前缀树) 1 题目描述(Leetcode题目链接)   实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三 ...

  2. LeetCode 208. 实现 Trie (前缀树) —— 提供一套前缀树模板

    208. 实现 Trie (前缀树) Ideas 前缀树嘛,直接套模板咯,把之前写的拿过来抄一遍. 提供一下我的模板. Code Python class TrieNode:def __init__( ...

  3. leetcode前缀树java_Java实现 LeetCode 208 实现 Trie (前缀树)

    208. 实现 Trie (前缀树) 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作. 示例: Trie trie = new Trie() ...

  4. Leetcode —— 208. 实现 Trie (前缀树)(Python)

    实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作. 示例: Trie trie = new Trie();trie.insert(" ...

  5. [leetcode]208. 实现 Trie (前缀树)

    struct TrieNode {bool isEnd; // 是否是一个单词的结束TrieNode *next[26];TrieNode(){isEnd = false;memset(next, N ...

  6. 【LeetCode】【HOT】208. 实现 Trie (前缀树)

    [LeetCode][HOT]208. 实现 Trie (前缀树) 文章目录 [LeetCode][HOT]208. 实现 Trie (前缀树) package hot;public class So ...

  7. 208. 实现 Trie (前缀树)

    208. 实现 Trie (前缀树) Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键.这一数据结构有相当多的应用情景,例 ...

  8. LeetCode 208 实现 Trie (字典树)

    208 实现 Trie (字典树) 题目: 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作. 示例: Trie trie = new Tri ...

  9. 287寻找重复数;6Z 字形变换;142环形链表 II;148排序链表;208实现 Trie (前缀树)

    给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数. 示例 1: 输入: [1,3 ...

最新文章

  1. PingCode入选36氪「WISE 2021新经济之王」年度硬核、新势力企业
  2. 少标签数据学习,54页ppt
  3. golang编译错误 copying /tmp/go-build069786374/b001/exe/a.out: No such file or directory 解决方法
  4. 使用驱动调试助手应该注意的问题
  5. 【JeeSite】用户管理
  6. css 选择器学习笔记
  7. 微信公众号接入开发者模式,服务器配置Token验证
  8. 中断、轮询、事件驱动、消息驱动、数据流驱动(Flow-Driven)?
  9. html5多颜色灯笼旋转,HTML5 Canvas 漂亮的斑马条纹灯笼
  10. JavaSocket编程的一个简单例子
  11. 安装北京极通EWebs作为企业虚拟化平台突然出现应用程序无法访问的现象
  12. 火灾自动报警系统 切换模块
  13. Win10系统开启黑暗主题
  14. [模电]差模信号、共模信号的通俗解释
  15. 如何打开.exe文件
  16. ubuntu绘图软件
  17. linux常用命令:iconv 命令(用于文件的编码转换),还可以用UE另存
  18. 实习生到公司第一天应该怎么快速上手
  19. SpringBoot的pom.xml中parent和starter的区别
  20. Maven+Spring Web 项目结构在Eclipse下面的实现

热门文章

  1. 怎么用Android做登录界面,利用Android怎么制作一个APP登录界面
  2. c++求矩阵的秩_一篇文章搞定矩阵相关概念及意义通俗解释汇总
  3. 好用的netcat工具
  4. python学习之散学
  5. 将查询后的数据导入到其他表中
  6. 2B.处女座与cf(C++)
  7. Codeforces Round #535 (Div. 3) [codeforces div3 难度测评]
  8. 六、配置Oracle数据库的网络环境
  9. MyBatis动态SQL小结
  10. thymeleaf+bootstrap,onclick传参实现模态框中遇到的错误