208 实现 Trie (字典树)
题目:
实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。

示例:
Trie trie = new Trie();
trie.insert("apple");
trie.search("apple");   // 返回 true
trie.search("app");     // 返回 false
trie.startsWith("app"); // 返回 true
trie.insert("app");
trie.search("app");     // 返回 true

说明:
你可以假设所有的输入都是由小写字母 a-z 构成的。
保证所有输入均为非空字符串。

其实这道题不难,最难的是要理解字典树的结构,如下图:

如果能理解字典树,就能比较简单的写出这道题,注意一点就是,如何到自己的孩子节点
初始化:就是对root初始化,并附上空值
插入:一个循环,判断这个节点有没有值,没有就插入,然后将指针移动到自己的孩子节点,继续
查找:同样的循环,一个一个字符查找,如果一旦有为空的,就直接返回false,如果遍历完了没错,再判断isWord是否为真,看是不是已经到了结尾
查询部分:就跟之前不同的是不用最后判断是否是整字符

代码:

public class TrieNode{public char val;public boolean isWord;public TrieNode[] children = new TrieNode[26];public TrieNode(){}TrieNode(char c){TrieNode node = new TrieNode();node.val = c;}}private TrieNode root;public Trie() {root = new TrieNode();root.val=' ';}/** Inserts a word into the trie. */public void insert(String word) {TrieNode ws = root;for (int i = 0; i <word.length() ; i++) {char c = word.charAt(i);if(ws.children[c-'a']==null){ws.children[c-'a']= new TrieNode(c);}ws=ws.children[c-'a'];//往下走}ws.isWord=true;}/** Returns if the word is in the trie. */public boolean search(String word) {TrieNode ws = root;for (int i = 0; i <word.length() ; i++) {char c = word.charAt(i);if(ws.children[c-'a']==null) return false;ws=ws.children[c-'a'];//往下走}return ws.isWord;//判断是否是单词的结尾,而不是一部分}/** Returns if there is any word in the trie that starts with the given prefix. */public boolean startsWith(String prefix) {TrieNode ws = root;for (int i = 0; i <prefix.length() ; i++) {char c = prefix.charAt(i);if(ws.children[c-'a']==null) return false;ws=ws.children[c-'a'];//往下走}return true;}

LeetCode 208 实现 Trie (字典树)相关推荐

  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 (前缀树) 解题思路及C++实现

    解题思路: 对每一个节点开一个数组,数组大小为26(26个字母),数组对应的下表就对应儿子节点的分母. 在插入一个字符串的函数insert中,程序的逻辑就是:遍历一次word中的每个字符,如果当前节点 ...

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

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

  7. 分门别类刷leetcode——高级数据结构(字典树,前缀树,trie树,并查集,线段树)

    目录 Trie树(字典树.前缀树)的基础知识 字典树的节点表示 字典树构造的例子 字典树的前序遍历 获取字典树中全部单词 字典树的整体功能 字典树的插入操作 字典树的搜索操作 字典树的前缀查询 字典树 ...

  8. 字典树实现_【Leetcode每日打卡】单词的压缩编码 Trie(字典树)入门

    一.前言(鸡汤(一段废..话..可以跳过啦)) 同学们好!没想到我这个小小的公众号破千粉啦,对于大佬们而言或许不值一提,但是对我而言是一个莫大的鼓舞!更加坚定了我持续输出优质内容的决心.希望我们都能每 ...

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

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

最新文章

  1. 元宇宙中可跨语种交流,Meta 发布新语音模型,支持128种语言无障碍对话
  2. 从1G到5G,从回顾过去到展望未来
  3. python编程有哪些-学习python编程,有哪些不错的软件?
  4. 内嵌WEB服务器加载原理
  5. 如何使用redis来实现常见的游戏排行榜
  6. [极客大挑战 2019]BabySQL
  7. 从Kaggle HuBMAP 比赛中学习语义分割
  8. CFSSL 生成证书
  9. python数字转换英文26字母_用python实现英文字母和相应序数转换的方法
  10. 如何在Windows中安全删除垃圾箱(回收站)
  11. 点餐APP 冲刺一总结
  12. 读于博士SI设计手记有感
  13. notepad集成jsonviewer 查看json
  14. DCS任务编辑器文件无法正常加载,一直停在‘正在读取。。’
  15. PMCAFF转载——网易云课堂产品研习
  16. Windows安装Mysql提示无法定位程序输入点fesetround于动态链接库的解决方案
  17. 任务分配算法c语言程序,程序员算法基础——贪心算法
  18. 通过图片url转化base64
  19. [转发]MyTT所有源码
  20. A simple webframe base on web.py

热门文章

  1. python使用BeautifulSoup爬取2345电影网
  2. python爬虫什么书好_python爬虫什么书
  3. 又一创新!阿里云 Serverless 调度论文被云计算顶会 ACM SoCC 收录
  4. python基础十 函数(下)匿名函数、高阶函数、闭包、装饰器
  5. [软件人生]从应聘到骂人
  6. 再论”核高基“培育”外国种“,歪名传四方
  7. 转豆瓣--梁海棠虽然死了,但却占据了陈少杰的身心。乔燕虽然还…
  8. aws部署web_运营酿酒厂解释了Amazon Web Services(AWS)
  9. Flutter 正式推出 Windows 平台支持
  10. ps -aux | grep 用法