当前位置:网站首页>208. 实现 Trie (前缀树)
208. 实现 Trie (前缀树)
2022-07-01 03:23:00 【Sun_Sky_Sea】
208. 实现 Trie (前缀树)
原始题目链接:https://leetcode.cn/problems/implement-trie-prefix-tree/
Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。
请你实现 Trie 类:
Trie() 初始化前缀树对象。
void insert(String word) 向前缀树中插入字符串 word 。
boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。
boolean startsWith(String prefix) 如果之前已经插入的字符串 word 的前缀之一为 prefix ,返回 true ;否则,返回 false 。
示例:
输入
[“Trie”, “insert”, “search”, “search”, “startsWith”, “insert”, “search”]
[[], [“apple”], [“apple”], [“app”], [“app”], [“app”], [“app”]]
输出
[null, null, true, false, true, null, true]
解释
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
提示:
1 <= word.length, prefix.length <= 2000
word 和 prefix 仅由小写英文字母组成
insert、search 和 startsWith 调用次数 总计 不超过 3 * 104 次
解题思路:
构建树的节点,使用字典存储子树结构,{word_char: 子树},标识从根节点到当前节点的路径,构成了一个关键词。
代码实现:
class Trie:
def __init__(self):
self.root = Node()
def insert(self, word: str) -> None:
cur_node = self.root
for c in word:
cur_node = cur_node.children[c]
cur_node.flag = True
def search(self, word: str) -> bool:
cur_node = self.root
for c in word:
cur_node = cur_node.children.get(c)
if cur_node == None:
return False
return cur_node.flag
def startsWith(self, prefix: str) -> bool:
cur_node = self.root
for c in prefix:
cur_node = cur_node.children.get(c)
if cur_node == None:
return False
return True
# 定义一个节点
class Node(object):
def __init__(self):
# 使用字典存储子树结构,{word_char: 子树}
self.children = collections.defaultdict(Node)
# 标识从根节点到当前节点的路径,构成了一个关键词
self.flag = False
# Your Trie object will be instantiated and called as such:
# obj = Trie()
# obj.insert(word)
# param_2 = obj.search(word)
# param_3 = obj.startsWith(prefix)
边栏推荐
- Sort linked list (merge sort)
- 不用加减乘除实现加法
- File upload and download
- Filter
- Random seed torch in deep learning manual_ seed(number)、torch. cuda. manual_ seed(number)
- FCN full Convolution Network Understanding and Code Implementation (from pytorch Official Implementation)
- Download and installation configuration of cygwin
- Md5sum operation
- Listener listener
- AfxMessageBox和MessageBox的用法
猜你喜欢
![[small sample segmentation] interpretation of the paper: prior guided feature enrichment network for fee shot segmentation](/img/b3/887d3fb64acbf3702814d32e2e6414.png)
[small sample segmentation] interpretation of the paper: prior guided feature enrichment network for fee shot segmentation
![[深度学习]激活函数(Sigmoid等)、前向传播、反向传播和梯度优化;optimizer.zero_grad(), loss.backward(), optimizer.step()的作用及原理](/img/9f/187ca83be1b88630a6c6fbfb0620ed.png)
[深度学习]激活函数(Sigmoid等)、前向传播、反向传播和梯度优化;optimizer.zero_grad(), loss.backward(), optimizer.step()的作用及原理

Sort linked list (merge sort)
![[小样本分割]论文解读Prior Guided Feature Enrichment Network for Few-Shot Segmentation](/img/b3/887d3fb64acbf3702814d32e2e6414.png)
[小样本分割]论文解读Prior Guided Feature Enrichment Network for Few-Shot Segmentation

文件上传下载

MFC窗口滚动条用法

访问阿里云存储的图片URL实现在网页直接预览略缩图而不直接下载

Gorilla/mux framework (RK boot): RPC error code design

家居网购项目

SEM of C language_ Tvariable type
随机推荐
Unexpected token o in JSON at position 1 ,JSON解析问题
线程数据共享和安全 -ThreadLocal
Finally in promise
数据库中COMMENT关键字的使用
md5sum操作
Ouc2021 autumn - Software Engineering - end of term (recall version)
Overview of EtherCAT principle
Explain spark operation mode in detail (local+standalone+yarn)
Detailed list of errors related to twincat3 ads of Beifu
Processing of menu buttons on the left and contents on the right of the background system page, and double scrolling appears on the background system page
How do I use Google Chrome 11's Upload Folder feature in my own code?
使用selenium自动化测试工具爬取高考相关院校专业招生分数线及排名情况
IPv4和IPv6、局域网和广域网、网关、公网IP和私有IP、IP地址、子网掩码、网段、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?
Split(), split(), slice(), can't you tell?
pytorch训练深度学习网络设置cuda指定的GPU可见
数据库DDL(Data Definition Language,数据定义语言)知识点
[daily training] 1175 Prime permutation
Use of comment keyword in database
10、Scanner. Next() cannot read spaces /indexof -1
Cookie&Session