LeetCode 208 实现 Trie (字典树)
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 (字典树)相关推荐
- Leetcode 208.实现 Trie (前缀树)(Implement Trie (Prefix Tree))
Leetcode 208.实现 Trie (前缀树) 1 题目描述(Leetcode题目链接) 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三 ...
- LeetCode 208. 实现 Trie (前缀树) —— 提供一套前缀树模板
208. 实现 Trie (前缀树) Ideas 前缀树嘛,直接套模板咯,把之前写的拿过来抄一遍. 提供一下我的模板. Code Python class TrieNode:def __init__( ...
- leetcode前缀树java_Java实现 LeetCode 208 实现 Trie (前缀树)
208. 实现 Trie (前缀树) 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作. 示例: Trie trie = new Trie() ...
- Leetcode —— 208. 实现 Trie (前缀树)(Python)
实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作. 示例: Trie trie = new Trie();trie.insert(" ...
- Leetcode 208. 实现 Trie (前缀树) 解题思路及C++实现
解题思路: 对每一个节点开一个数组,数组大小为26(26个字母),数组对应的下表就对应儿子节点的分母. 在插入一个字符串的函数insert中,程序的逻辑就是:遍历一次word中的每个字符,如果当前节点 ...
- [leetcode]208. 实现 Trie (前缀树)
struct TrieNode {bool isEnd; // 是否是一个单词的结束TrieNode *next[26];TrieNode(){isEnd = false;memset(next, N ...
- 分门别类刷leetcode——高级数据结构(字典树,前缀树,trie树,并查集,线段树)
目录 Trie树(字典树.前缀树)的基础知识 字典树的节点表示 字典树构造的例子 字典树的前序遍历 获取字典树中全部单词 字典树的整体功能 字典树的插入操作 字典树的搜索操作 字典树的前缀查询 字典树 ...
- 字典树实现_【Leetcode每日打卡】单词的压缩编码 Trie(字典树)入门
一.前言(鸡汤(一段废..话..可以跳过啦)) 同学们好!没想到我这个小小的公众号破千粉啦,对于大佬们而言或许不值一提,但是对我而言是一个莫大的鼓舞!更加坚定了我持续输出优质内容的决心.希望我们都能每 ...
- 【LeetCode】【HOT】208. 实现 Trie (前缀树)
[LeetCode][HOT]208. 实现 Trie (前缀树) 文章目录 [LeetCode][HOT]208. 实现 Trie (前缀树) package hot;public class So ...
最新文章
- 元宇宙中可跨语种交流,Meta 发布新语音模型,支持128种语言无障碍对话
- 从1G到5G,从回顾过去到展望未来
- python编程有哪些-学习python编程,有哪些不错的软件?
- 内嵌WEB服务器加载原理
- 如何使用redis来实现常见的游戏排行榜
- [极客大挑战 2019]BabySQL
- 从Kaggle HuBMAP 比赛中学习语义分割
- CFSSL 生成证书
- python数字转换英文26字母_用python实现英文字母和相应序数转换的方法
- 如何在Windows中安全删除垃圾箱(回收站)
- 点餐APP 冲刺一总结
- 读于博士SI设计手记有感
- notepad集成jsonviewer 查看json
- DCS任务编辑器文件无法正常加载,一直停在‘正在读取。。’
- PMCAFF转载——网易云课堂产品研习
- Windows安装Mysql提示无法定位程序输入点fesetround于动态链接库的解决方案
- 任务分配算法c语言程序,程序员算法基础——贪心算法
- 通过图片url转化base64
- [转发]MyTT所有源码
- A simple webframe base on web.py
热门文章
- python使用BeautifulSoup爬取2345电影网
- python爬虫什么书好_python爬虫什么书
- 又一创新!阿里云 Serverless 调度论文被云计算顶会 ACM SoCC 收录
- python基础十 函数(下)匿名函数、高阶函数、闭包、装饰器
- [软件人生]从应聘到骂人
- 再论”核高基“培育”外国种“,歪名传四方
- 转豆瓣--梁海棠虽然死了,但却占据了陈少杰的身心。乔燕虽然还…
- aws部署web_运营酿酒厂解释了Amazon Web Services(AWS)
- Flutter 正式推出 Windows 平台支持
- ps -aux | grep 用法