• 1-字典树-实现 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 。

    示例:

    输入
    ["Trie", "insert", "search", "search", "startsWith", "insert", "search"]
    [[], ["apple"], ["apple"], ["app"], ["app"], ["app"], ["app"]]
    输出
    [null, null, true, false, true, null, true]
    
    解释
    Trie trie = new Trie();
    trie.insert("apple");
    trie.search("apple");   // 返回 True
    trie.search("app");     // 返回 False
    trie.startsWith("app"); // 返回 True
    trie.insert("app");
    trie.search("app");     // 返回 True

     这道题比较简单,其实就是多维数组的灵活运用。

    1. type Trie struct {
    2. children [26]*Trie
    3. isEnd bool
    4. }
    5. func Constructor() Trie {
    6. return Trie{}
    7. }
    8. func (this *Trie) Insert(word string) {
    9. node := this
    10. for _, str := range word {
    11. if node.children[str-'a'] == nil {
    12. node.children[str-'a'] = &Trie{}
    13. }
    14. node = node.children[str-'a']
    15. }
    16. node.isEnd = true
    17. }
    18. func (this *Trie) SearchPrefix(prefix string) *Trie {
    19. node := this
    20. for _, str := range prefix {
    21. if node.children[str-'a'] == nil {
    22. return nil
    23. }
    24. node = node.children[str-'a']
    25. }
    26. return node
    27. }
    28. func (this *Trie) Search(word string) bool {
    29. node := this.SearchPrefix(word)
    30. return node != nil && node.isEnd
    31. }
    32. func (this *Trie) StartsWith(prefix string) bool {
    33. return this.SearchPrefix(prefix) != nil
    34. }

  • 相关阅读:
    17.linuxGPIO应用编程
    【Python打包exe文件】
    15. 三数之和
    数据读写:Python读写CSV文件
    elementUI使用el-upload上传文件写法总结及避坑,上传图片/视频到本地/服务器以及回显+删除
    MySQL事务 MVCC的实现原理
    Pycharm 常用快捷键
    PMP项目整合管理
    岛屿个数(dfs)
    leetCode 77. 组合
  • 原文地址:https://blog.csdn.net/weixin_56270372/article/details/136445082