LeetCode、208. 实现 Trie (前缀树)【中等,自定义数据结构】

文章目录

前言

博主介绍:✌目前全网粉丝2W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。

涵盖技术内容:Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。

博主所有博客文件目录索引:博客目录索引(持续更新)

视频平台:b站-Coder长路


LeetCode、208. 实现 Trie (前缀树)【中等,自定义数据结构】

题目链接与分类

题目链接:LeetCode、208. 实现 Trie (前缀树)

分类:02数据结构/树/字典树(前缀树)


思路

思路:数组来模拟前缀树,对于相同的前缀统一使用一份来存储。在代码中使用了通用的代码:searchPrefix,用于去查找单词的前缀。

复杂度分析:

  • 初始化:时间复杂度O(1);空间复杂度O(S,字符串长度)
  • 其他操作:时间复杂度O(S,字符串长度);空间复杂度O(S,字符串长度)
java 复制代码
class TrieNode {
    boolean isWord = false;
    TrieNode[] children = new TrieNode[26];
    public TrieNode(){}
}

class Trie {
    
    TrieNode root;

    public Trie() {
        root = new TrieNode();
    }
    
    public void insert(String word) {
        TrieNode curr = root;
        for (char c : word.toCharArray()) {
            if (curr.children[c - 'a'] == null) curr.children[c - 'a'] = new TrieNode();
            curr = curr.children[c - 'a'];
        }
        curr.isWord = true;
    }
    
    public boolean search(String word) {
        TrieNode node = searchPrefix(word);
        return node != null && node.isWord;
    }
    
    public boolean startsWith(String prefix) {
        return searchPrefix(prefix) != null;
    }

    //通用方法
    public TrieNode searchPrefix(String prefix) {
        TrieNode node = this.root;
        for (char ch: prefix.toCharArray()) {
            int index = ch - 'a';
            if (node.children[index] == null) return null;
            node = node.children[index];
        }
        return node;
    }

}

/**
 * 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);
 */

资料获取

大家点赞、收藏、关注、评论啦~

精彩专栏推荐订阅:在下方专栏👇🏻

更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅


整理者:长路 时间:2024.2.12

相关推荐
惯导马工8 分钟前
【论文导读】AI-Assisted Fatigue and Stamina Control for Performance Sports on IMU-Gene
深度学习·算法
沐怡旸15 分钟前
【算法--链表】109.有序链表转换二叉搜索树--通俗讲解
算法·面试
zl_dfq22 分钟前
数据结构 之 【模拟实现哈希表】
数据结构
CoovallyAIHub1 小时前
推理提速一倍!SegDT:轻量化扩散 Transformer,医学图像分割的技术跨越
深度学习·算法·计算机视觉
CoovallyAIHub1 小时前
无人机方案如何让桥梁监测更安全、更智能?融合RTK与超高分辨率成像,优于毫米精度
深度学习·算法·计算机视觉
lingran__1 小时前
C语言制作扫雷游戏(拓展版赋源码)
c语言·算法·游戏
序属秋秋秋1 小时前
《C++进阶之STL》【set/map 使用介绍】
开发语言·c++·笔记·leetcode·stl·set·map
self_myth1 小时前
【考研/面试必备】操作系统核心原理与IPO机制深度解析
大数据·算法
Greedy Alg1 小时前
LeetCode 240. 搜索二维矩阵 II
算法·leetcode·职场和发展
墨染点香1 小时前
LeetCode 刷题【68. 文本左右对齐】
算法·leetcode·职场和发展