LeetCode----字典树
1 原理
2 构建字典树
class Trie:
def __init__(self):
# 字典树结构
# children 数组用于存储字符,数组下标位置 当不为空时意味存在这个字符
# isEnd 用于标记是否到达单词尾
self.children = [None] * 26
self.isEnd = False
def insert(self, word: str) -> None:
# 将node 指向根节点
node = self
for ch in word:
# 获取当前字符所对应的下标
num = ord(ch) - ord("a")
# 如果节点中children数组的num下标为空,则不存在当前字符。
# 在当前下标下创建 一个 Trie() 节点
if not node.children[num]:
node.children[num] = Trie()
# node指向下一层 node
node = node.children[num]
# 字符全部插入完毕,在最后一层设置单词结束符
node.isEnd = True
def search(self, word: str) -> bool:
# 指向根节点
node = self
for ch in word:
num = ord(ch) - ord("a")
# 如果节点的children中没有 字符,则返回 Failse
if not node.children[num]:
return False
# 更新下一层节点
node = node.children[num]
return node.isEnd
def startsWith(self, prefix: str) -> bool:
node = self
for ch in prefix:
num = ord(ch) - ord("a")
if not node.children[num]:
return False
node = node.children[num]
# 只找前缀,把prefix遍历完即可
return True
# 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)
LeetCode----字典树的更多相关文章
- Trie - leetcode [字典树/前缀树]
208. Implement Trie (Prefix Tree) 字母的字典树每个节点要定义一个大小为26的子节点指针数组,然后用一个标志符用来记录到当前位置为止是否为一个词,初始化的时候讲26个子 ...
- Leetcode字典树-720:词典中最长的单词
第一次做leetcode的题目,虽然做的是水题,但是菜鸟太菜,刚刚入门,这里记录一些基本的知识点.大佬看见请直接路过. https://leetcode-cn.com/problems/longest ...
- Trie(前缀树/字典树)及其应用
Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,PATRICIA tree,以及bitwise版本的crit-bit tree.当然很多名字的意义其实有交 ...
- Tire树(字典树)
from:https://www.cnblogs.com/justinh/p/7716421.html Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,P ...
- [LeetCode] Implement Trie (Prefix Tree) 实现字典树(前缀树)
Implement a trie with insert, search, and startsWith methods. Note:You may assume that all inputs ar ...
- LeetCode 14. Longest Common Prefix字典树 trie树 学习之 公共前缀字符串
所有字符串的公共前缀最长字符串 特点:(1)公共所有字符串前缀 (好像跟没说一样...) (2)在字典树中特点:任意从根节点触发遇见第一个分支为止的字符集合即为目标串 参考问题:https://lee ...
- [LeetCode] 208. Implement Trie (Prefix Tree) 实现字典树(前缀树)
Implement a trie with insert, search, and startsWith methods. Example: Trie trie = new Trie(); trie. ...
- 字典树(查找树) leetcode 208. Implement Trie (Prefix Tree) 、211. Add and Search Word - Data structure design
字典树(查找树) 26个分支作用:检测字符串是否在这个字典里面插入.查找 字典树与哈希表的对比:时间复杂度:以字符来看:O(N).O(N) 以字符串来看:O(1).O(1)空间复杂度:字典树远远小于哈 ...
- leetcode之820. 单词的压缩编码 | python极简实现字典树
题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", "bell& ...
- C#LeetCode刷题-字典树
字典树篇 # 题名 刷题 通过率 难度 208 实现 Trie (前缀树) 48.6% 中等 211 添加与搜索单词 - 数据结构设计 39.9% 中等 212 单词搜索 II 27.9% ...
随机推荐
- ArkUI-X构建Android平台AAR及使用
本教程主要讲述如何利用ArkUI-X SDK完成Android AAR开发,实现基于ArkTS的声明式开发范式在android平台显示.包括: 1.跨平台Library工程开发介绍 2.AAR在And ...
- 一篇辣鸡python写题目感想之——PTA自测-1 打印沙漏
本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓"沙漏形状",是指每行 ...
- 灵活、可用、高扩展,EasyMR 带来全新 Yarn 的队列管理功能及可视化配置
YARN(Yet Another Resource Negotiator)是 Hadoop 生态系统中的资源调度器,主要用于资源管理和作业调度.YARN 自身具备队列管理功能,通过对 YARN 资源队 ...
- Java中什么是类加载?类加载的过程?
类加载指的是把类加载到 JVM 中.把二进制流存储到内存中,之后经过一番解析.处理转化成可用的 class 类 二进制流可以来源于 class 文件,或通过字节码工具生成的字节码或来自于网络.只要符合 ...
- Google Cloud Function函数访问AWS的Redis服务(二)
上一章介绍了使用VP嗯将Google Cloud和AWS的网络连通,这里介绍如何使用:使用Google Cloud Function 访问AWS的Redis服务. 一:Google Cloud 创建 ...
- Blazor学习之旅 (14) Blazor WebAssembly
在上一篇我们学习了如何创建和使用Razor类库,这一篇我们了解下WebAssembly是什么,以及创建第一个Blazor WebAssembly应用. 什么是WebAssembly? WebAssem ...
- C# The request was aborted: Could not create SSL/TLS secure channel. - C#
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | Secur ...
- mac快速安装git
前提 每次安装git,都需要安装xcode,我不需要xcode 而且这厮还极其的大,下载慢. 找到一个办法[如果你不需要 Xcode,只安装 Xcode Command Line Tools 就可以了 ...
- Luogu P11159 【MX-X6-T5】再生 题解
P11159 [MX-X6-T5]再生 简单数学题. 首先根不同肯定是在诈骗,最长的链的链顶就是树根.然后考虑一条长链内,除了链顶都可以随意排序,对于每条链,答案乘上链中元素数量减一的阶乘. 然后考虑 ...
- C语言中如何不用strcat函数来连接2个数组
C语言中如何不用strcat函数来连接2个数组? 今天就遇到这个问题,所以就尝试了一下,虽然这个问题被好多大佬看作就不是问题,但我还是对这方面做个简单的介绍. 下面是我的代码和运行情况. 其实简单的引 ...