温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

算法中trie怎么实现

发布时间:2021-12-01 17:11:36 来源:亿速云 阅读:110 作者:iii 栏目:大数据

这篇文章主要介绍“算法中trie怎么实现”,在日常操作中,相信很多人在算法中trie怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”算法中trie怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

算法:

前缀树主要用于搜索算法,思想和实现并不复杂,属于典型题目,算法如下所示:

1.最多 n个指向子结点的链接,其中每个链接对应字母表数据集中的一个字母,本文中假定 n 为 26,小写拉丁字母的数量。2.布尔字段,以指定节点是对应键的结尾还是只是键前缀

算法中trie怎么实现

代码实现:

type Trie struct {    IsEnd bool     Link [26]*Trie}

/** Initialize your data structure here. */func Constructor() Trie {    root := Trie{}    return  root}
/** Inserts a word into the trie. */func (this *Trie) Insert(word string)  {    var node *Trie = this    for _, w := range []byte(word) {        if node.Link[w - byte('a')] == nil {            n := Trie{}            node.Link[w - byte('a')] = &n        }        node = node.Link[w - byte('a')]    }    node.IsEnd = true    return}

/** Returns if the word is in the trie. */func (this *Trie) Search(word string) bool {    var node *Trie = this    for _, w := range []byte(word) {        if node.Link[w - byte('a')] == nil {            node = nil            break        }        node = node.Link[w - byte('a')]    }    return node != nil && node.IsEnd}

/** Returns if there is any word in the trie that starts with the given prefix. */func (this *Trie) StartsWith(prefix string) bool {    var node *Trie = this    for _, w := range []byte(prefix) {        if node.Link[w - byte('a')] == nil {            node = nil            break        }        node = node.Link[w - byte('a')]    }    return node != nil}

/** * Your Trie object will be instantiated and called as such: * obj := Constructor(); * obj.Insert(word); * param_2 := obj.Search(word); * param_3 := obj.StartsWith(prefix); */

执行结果:

算法中trie怎么实现

到此,关于“算法中trie怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI