Golang | Leetcode Golang题解之第208题实现Trie前缀树

题目:

题解:

Go 复制代码
type Trie struct {
    children [26]*Trie
    isEnd    bool
}

func Constructor() Trie {
    return Trie{}
}

func (t *Trie) Insert(word string) {
    node := t
    for _, ch := range word {
        ch -= 'a'
        if node.children[ch] == nil {
            node.children[ch] = &Trie{}
        }
        node = node.children[ch]
    }
    node.isEnd = true
}

func (t *Trie) SearchPrefix(prefix string) *Trie {
    node := t
    for _, ch := range prefix {
        ch -= 'a'
        if node.children[ch] == nil {
            return nil
        }
        node = node.children[ch]
    }
    return node
}

func (t *Trie) Search(word string) bool {
    node := t.SearchPrefix(word)
    return node != nil && node.isEnd
}

func (t *Trie) StartsWith(prefix string) bool {
    return t.SearchPrefix(prefix) != nil
}
相关推荐
web守墓人3 小时前
【go语言】window环境从源码编译go
开发语言·后端·golang
画个大饼10 小时前
Go语言实战:快速搭建完整的用户认证系统
开发语言·后端·golang
Demons_kirit15 小时前
Leetcode 2845 题解
算法·leetcode·职场和发展
Yeats_Liao17 小时前
Go 语言 TCP 端口扫描器实现与 Goroutine 池原理
开发语言·tcp/ip·golang
我的golang之路果然有问题17 小时前
速成GO访问sql,个人笔记
经验分享·笔记·后端·sql·golang·go·database
Wendy_robot17 小时前
【滑动窗口+哈希表/数组记录】Leetcode 438. 找到字符串中所有字母异位词
c++·算法·leetcode
程序员-King.17 小时前
day49—双指针+贪心—验证回文串(LeetCode-680)
算法·leetcode·贪心算法·双指针
Y1nhl19 小时前
力扣hot100_链表(3)_python版本
python·算法·leetcode·链表·职场和发展
前端 贾公子20 小时前
详解 LeetCode 第 242 题 - 有效的字母组
算法·leetcode·职场和发展
ErizJ20 小时前
Golang | 迭代器模式
开发语言·golang·迭代器模式