LeetCode 208. 实现 Trie (前缀树) —— 提供一套前缀树模板
208. 实现 Trie (前缀树)
Ideas
前缀树嘛,直接套模板咯,把之前写的拿过来抄一遍。
提供一下我的模板。
Code
Python
class TrieNode:def __init__(self, path=0, end=0):self.end = endself.path = pathself.next_nodes = {}class Trie:def __init__(self):self.root = TrieNode()@staticmethoddef get_index(word):return [ord(ch) - ord('a') for ch in word]def insert(self, word: str) -> None:if not word:returnnode = self.rootfor idx in self.get_index(word):if idx not in node.next_nodes:node.next_nodes[idx] = TrieNode()node = node.next_nodes.get(idx)node.path += 1node.end += 1def search(self, word: str) -> bool:if not word:return Falsenode = self.rootfor idx in self.get_index(word):if idx not in node.next_nodes:return Falsenode = node.next_nodes.get(idx)return node.end != 0def delete(self, word: str) -> None:if self.search(word):node = self.rootfor idx in self.get_index(word):if node.next_node[idx].path - 1 == 0:node.next_node[idx].path -= 1node.next_node[idx] = Nonereturnnode = node.next_nodes[idx]node.end -= 1def startsWith(self, prefix: str) -> bool:if not prefix:return Falsenode = self.rootfor idx in self.get_index(prefix):if idx not in node.next_nodes:return Falsenode = node.next_nodes[idx]return node.path != 0
LeetCode 208. 实现 Trie (前缀树) —— 提供一套前缀树模板相关推荐
- Leetcode 208.实现 Trie (前缀树)(Implement Trie (Prefix Tree))
Leetcode 208.实现 Trie (前缀树) 1 题目描述(Leetcode题目链接) 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三 ...
- BZOJ1146[CTSC2008]网络管理——出栈入栈序+树状数组套主席树
题目描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条 ...
- BZOJ.4553.[HEOI2016TJOI2016]序列(DP 树状数组套线段树/二维线段树(MLE) 动态开点)
题目链接:BZOJ 洛谷 \(O(n^2)\)DP很好写,对于当前的i从之前满足条件的j中选一个最大值,\(dp[i]=d[j]+1\) for(int j=1; j<i; ++j)if(a[j ...
- 2019南昌网络赛 I. Yukino With Subinterval 树状数组套线段树
I. Yukino With Subinterval 题目链接: Problem Descripe Yukino has an array \(a_1, a_2 \cdots a_n\). As a ...
- 【BZOJ1901】Dynamic Rankings,树状数组套主席树
Time:2016.05.09 Author:xiaoyimi 转载注明出处谢谢 传送门(权限) 题面 1901: Zju2112 Dynamic Rankings Time Limit: 10 Se ...
- zoj 2112 树状数组 套主席树 动态求区间 第k个数
总算是把动态求区间第k个数的算法看明白了. 在主席树的基础上,如果有修改操作,则要通过套树状数组来实现任意区间求第k小的问题. 刚开始看不明白什么意思,现在有一点理解.树状数组的每个元素是一个线段树, ...
- (三叉字典树)二叉树套字典树
看了道题,是要写个字典树排序的,但又不局限于二十六个字母,于是来了个三叉字典树(二叉树套字典树).最差时间复杂度是trie树的常数倍,空间比trie树省得多了. #include<cstdio& ...
- H - Hello Ms. Ze(树状数组套主席树,线段树上二分)
H - Hello Ms. Ze 给定nnn种不同的材料,第iii种材料有aia_iai个,有mmm个操作,操作分为两类: 把第xxx种材料修改为yyy个, 只用[l,r][l, r][l,r]区间 ...
- ICPC 徐州 H Yuuki and a problem (树状数组套主席树)
Yuuki and a problem 先不管第一问的修改操作,考虑如何达到第二问的查询操作, 题目要我们给出一个区间[l,r][l, r][l,r]中,不能通过权值+++得到的最小的数字是什么, 假 ...
最新文章
- 0x31.数论 - 质数
- Caffe 作者贾扬清:我们应该跳出框架的桎梏,往更广泛的领域寻找价值
- python入门作业编程题-Python语言编写有趣练习题!
- 局域网内同时使用两台路由器的配置方法
- Linux rpm 命令参数使用详解[介绍和应用]
- 冒泡排序解析 + 代码实现(C语言)
- 计算机二级试题java_计算机二级java精选试题及答案
- 点菜系统软件源码(点菜软件源码分享)
- 分享一个关于跨境电商的竞品分析报告
- 谷歌:AI系统需要“自我怀疑”能力,方能作出更好的决定!
- 回归云平台的本质,通过平台+应用模式实现软件资源线上共享
- C语言怎样提取一个数的十位个位百位千位
- Android Studio 使用本地gradle的配置
- 没有基础适合学习java吗?
- 想要用电脑玩游戏,好的显示器必不可少!电脑显示器要怎么选?
- 如何控制苹果Mac电池健康管理功能?
- Luminati LPM在Linux下安装教程
- C++中的自定义函数
- android开发——用户头像
- 从项目管理角度谈OA流程优化
热门文章
- python之闭包,装饰器
- Extjs Window用法详解 2 打印具体应用
- ARMV8 datasheet学习笔记3:AArch64应用级体系结构
- input.touch拖动物体
- MVC+JSON 无限滚动翻页
- 第二章 选择符和属性
- SEO优化工具之——Google Adwords 关键词工具
- 有一次去校内的某个礼堂看电影,在门口有个长得很斯文的陌生人一脸神秘地跟我说:师弟,能不能进去之后,把电影票从厕所的气窗扔出来给我……...
- ftp定期任务linux,Linux FTP服务器搭建和crontab计划任务制定
- redis可以存多少条数据_最新数据!在武汉14区排名多少可以上高中?精准定位...