54、图论-实现Trie前缀树

思路:

主要是构建一个trie前缀树结构。如果构建呢?看题意,应该当前节点对象下有几个属性:

1、next节点数组

2、是否为结尾

3、当前值

代码如下:

java 复制代码
class Trie {

    class Node {
        boolean end;
        Node[] nexts;

        public Node() {
            end = false;
            nexts = new Node[26];
        }
    }

    public Node root;

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

    public void insert(String word) {
        if (word == null) {
            return;
        }
        char[] chs = word.toCharArray();
        Node node = root;
        int path;
        for (int i = 0; i < chs.length; i++) {
            path = chs[i] - 'a';
            if (node.nexts[path] == null) {
                node.nexts[path] = new Node();
            }
            node = node.nexts[path];
        }
        node.end = true;
    }

    public boolean search(String word) {
        if (word == null) {
            return false;
        }
        char[] chs = word.toCharArray();
        Node node = root;
        int path;
        for (int i = 0; i < chs.length; i++) {
            path = chs[i] - 'a';
            if (node.nexts[path] == null) {
                return false;
            }
            node = node.nexts[path];
        }
        return node.end;
    }

    public boolean startsWith(String prefix) {
        if (prefix == null) {
            return false;
        }
        char[] chs = prefix.toCharArray();
        int path;
        Node node = root;
        for (int i = 0; i < chs.length; i++) {
            path = chs[i] - 'a';
            if (node.nexts[path] == null) {
                return false;
            }
            node = node.nexts[path];
        }
        return true;
    }
}
相关推荐
Edward111111115 小时前
普通java项目转为maven项目 J文件后缀.java变C文件
java·开发语言·maven
赵谨言5 小时前
基于OpenCV的图像梯度与边缘检测研究
大数据·开发语言·经验分享·python
YJlio5 小时前
BgInfo 学习笔记(11.5):多种输出方式(壁纸 / 剪贴板 / 文件)与“更新其他桌面”实战
笔记·学习·c#
Zhen (Evan) Wang5 小时前
.NET 6 API使用Serilog APM
c#·.net
一雨方知深秋5 小时前
二.java程序基本语法
java·类型转换·变量·方法·运算符·字面量·关键字标识符
啊阿狸不会拉杆5 小时前
《数字图像处理 》 第 1 章-绪论
图像处理·python·opencv·算法·数字图像处理
Java程序之猿5 小时前
Springboot 集成apache-camel +mqtt 根据主题处理mqtt消息
java·spring boot·后端
智驱力人工智能5 小时前
加油站静电夹检测 视觉分析技术的安全赋能与实践 静电夹检测 加油站静电夹状态监测 静电接地报警器检测
人工智能·深度学习·算法·安全·yolo·边缘计算
莓莓儿~5 小时前
Next.js 14 App Router数据获取开发手册
开发语言·前端·javascript
wjs20245 小时前
ionic 单选框详解
开发语言