当前位置: 首页 > article >正文

算法-字典树

在这里插入图片描述
模板

class TrieNode {
    boolean isEnd; // 是否为单词末尾
    TrieNode[] next; // 孩子节点数组
    public TrieNode() {
        this.isEnd = false;
        this.next = new TrieNode[26];
    }
}

class Trie {
    TrieNode root; // 虚拟头节点

    public Trie() {
        root = new TrieNode();
    }

    public void insert(String word) { // 插入单词
        TrieNode node = root;
        for (char c : word.toCharArray()) {
            // 先判断是否有该分支,再跳转
            if (node.next[c - 'a'] == null) {
                node.next[c - 'a'] = new TrieNode();
            }
            node = node.next[c - 'a'];
        }
        node.isEnd = true; // 标记
    }

    public boolean search(String word) { // 搜索单词
        TrieNode node = root;
        // 判断每个字符是否都存在
        for (char c : word.toCharArray()) {
            node = node.next[c - 'a'];
            if (node == null) {
                return false;
            }
        }
        // 判断末尾
        return node.isEnd;
    }

    public boolean startsWith(String prefix) { // 判断前缀
        TrieNode node = root;
        for (char c : prefix.toCharArray()) {
            node = node.next[c - 'a'];
            if (node == null) {
                return false;
            }
        }
        // 走到这里就说明是前缀!!
        return true;
    }
}

@#参考

作者:wxyz
链接:https://leetcode.cn/problems/minimum-number-of-valid-strings-to-form-target-i/solutions/3022452/trie-yuan-li-tui-dao-mo-ban-tu-jie-zi-di-w1sz/

http://www.kler.cn/a/442436.html

相关文章:

  • linux系统监视(centos 7)
  • 网站收录入口提交的方法有哪些(网站收录的方式都有哪些)
  • Linux安装Docker教程(详解)
  • ubuntu20.04安装MySQL5.7
  • 【C语言】_求字符串长度函数strlen
  • 运行fastGPT 第四步 配置ONE API 添加模型
  • 配置 wsl 2 网络代理时的认知误区
  • ubuntu 下的sqlite3
  • 4、基于SpringBoot网页时装购物系统
  • linux - 软硬链接
  • 小程序-基于java+SSM+Vue的模拟考试管理系统设计与实现
  • 青少年编程与数学 02-004 Go语言Web编程 01课题、Web应用程序
  • 5分钟掌握nodejs所有功能使用
  • 【UE5】pmx导入UE5,套动作。(防止“气球人”现象。
  • 【信息系统项目管理师-论文真题】2017上半年论文详解(包括解题思路和写作要点)
  • 二、windows环境下vscode使用wsl教程
  • 2019陕西ICPC-Grid with Arrows
  • Webpack常见的loader有哪些?
  • uniapp 微信小程序 均分数据展示
  • 递归:原理、应用与最佳实践
  • Android显示系统(13)- 向SurfaceFlinger提交Buffer
  • golang 使用gzip对json例子
  • 使用LSTM神经网络对股票日线行情进行回归训练(Pytorch版)
  • SpringBoot3-整合WebSocket指南
  • milvus 支持向量化索引的方法
  • 【Linux学习】十五、Linux/CentOS 7 用户和组管理