news 2026/10/13 6:24:05

Leetcode hot100 实现 Trie (前缀树)【中等】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Leetcode hot100 实现 Trie (前缀树)【中等】

特点:
1、多叉树
2、主要用到这三个方法:插入、查找、前缀匹配。没有更新和删除哈
3、每个节点都要维护26个字母的空间,整棵树摞起来,其实空间消耗蛮大的。但我们建立前缀树的目的不就是空间换时间嘛!

class Trie { boolean isEnd; //惰性值是false,所以只需要确认是词尾节点时手动赋值true,除了词尾节点其他new的Trie啥都不用管。 Trie[] nextNode = new Trie[26]; //下标对应字母,存的内容是子节点 public Trie() { } public void insert(String word) { //1.先拿到this根节点 Trie node = this; for (char c: word.toCharArray()){ //2-1、前缀树里已经有的 if(node.nextNode[c-'a']!=null){ node=node.nextNode[c-'a']; //2-2、没有的插进去 }else{ node.nextNode[c-'a']=new Trie(); node=node.nextNode[c-'a']; } } //3、处理词尾节点 node.isEnd=true; } /** 比如前缀树里已经有单词apple,这里需要考虑4种情况 1)apple:true 2) app:false 3) applee:flase 4)banana:false */ public boolean search(String word) { //1.先拿到this根节点 Trie node = this; //2. for(char c: word.toCharArray()){ if(node.nextNode[c-'a']!=null){ node=node.nextNode[c-'a']; }else return false; //针对情况3和情况4 } //3.妙! 覆盖情况1和情况2 return node.isEnd; } public boolean startsWith(String prefix) { //1.先拿到this根节点 Trie node = this; //2. for(char c: prefix.toCharArray()){ if(node.nextNode[c-'a']!=null){ node=node.nextNode[c-'a']; }else return false; } //3.走到最后了 return true; } } /** * Your Trie object will be instantiated and called as such: * Trie obj = new Trie(); * obj.insert(word); * boolean param_2 = obj.search(word); * boolean param_3 = obj.startsWith(prefix); */
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/13 6:23:28

一张图15秒带货视频:Claude Code本地合成全链路实战

1. 一张随手拍凭什么能撑起一条带货视频很多人第一次听到"一张照片做15秒带货视频"的反应是:这不就是拿张图配个音乐,然后硬凑时长吗?我一开始也这么想,直到自己真正跑通整条链路,才发现这里面能玩的花样比想…

作者头像 李华
网站建设 2026/10/13 6:22:49

【RHCA+】控制语句

“ 目录:RHCA -> 5 Shell脚本 -> 16 控制语句 ”脚本默认按顺序执行命令,通过控制语句可以改变执行顺序控制语句作用shift将位置参数向左移一位continue中断当前循环,进入下一次循环break终止整个循环exit终止脚本运行1、shift修改位置…

作者头像 李华
网站建设 2026/10/13 6:17:52

Vue3路由动画实践:从transition到动态方向,解决页面瞬切体验

做移动端H5商城的时候&#xff0c;用户反馈最多的一句是&#xff1a;"切换页面感觉像闪过去的&#xff0c;没什么过渡&#xff0c;体验太硬了。"那时候我路由动画的代码还是直接在<transition>外面包一层<router-view>&#xff0c;结果动画完全不生效&am…

作者头像 李华
网站建设 2026/10/13 6:17:42

PyQt5图片怎么显示?选QGraphicsView还是QLabel?一文讲透

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华