实现 Trie (前缀树)

Trie (发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。

请你实现 Trie 类:

  • Trie() 初始化前缀树对象。
  • void insert(String word) 向前缀树中插入字符串 word
  • boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false
  • boolean startsWith(String prefix) 如果之前已经插入的字符串 word 的前缀之一为 prefix ,返回 true ;否则,返回 false

关键字:26位长的children数组,每个字符与'a'相减,然后放在对应索引上作为children,查找的时候是插入的逆过程,每个字符与'a'相减,得出索引,看索引是否有值

java 复制代码
public class Trie {
    private Trie[] children;
    private boolean isEnd;
    public Trie() {
        children = new Trie[26];
        isEnd = false;

    }

    public void insert(String word) {
        Trie node = this;
        for (int i = 0; i < word.length(); i++) {
            char c = word.charAt(i);
            int index = c - 'a';
            if (node.children[index] == null) {
                node.children[index] = new Trie();
            }
            node = node.children[index];

        }
        node.isEnd = true;

    }

    public boolean search(String word) {
        Trie node = searchPrefix(word);
        return node != null && node.isEnd;

    }

    private Trie searchPrefix(String prefix) {
        Trie node = this;
        for (int i = 0; i < prefix.length(); i++) {
            char c = prefix.charAt(i);
            int index = c - 'a';
            if (node.children[index] == null) {
                return null;
            }
            node = node.children[index];

        }
        return node;
    }

    public boolean startsWith(String prefix) {
        return searchPrefix(prefix) != null;
    }

}
相关推荐
杜子不疼.44 分钟前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号31 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
sycmancia1 小时前
Qt——编辑交互功能的实现
开发语言·qt
石山代码2 小时前
C++ 内存分区 堆区
java·开发语言·c++
无风听海2 小时前
C# 隐式转换深度解析
java·开发语言·c#
LateFrames3 小时前
520 - 如何说晚安 (WPF)
c#·wpf·浪漫·ui体验
一只大袋鼠3 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git
LuminousCPP4 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
魔法阵维护师4 小时前
从零开发游戏需要学习的c#模块,第十四章(保存和加载)
学习·游戏·c#
web3.08889994 小时前
1688 图搜接口(item_search_img / 拍立淘) 接入方法
开发语言·python