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

leetcode hot100 tire前缀树

208. 实现 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 。

class TreeNode(object):

    def __init__(self):

        self.isword=False

        self.alpha_dict={}

class Trie(object):

    def __init__(self):

        self.root = TreeNode()


 

       

    def insert(self, word):

        """

        :type word: str

        :rtype: None

        """

        tmp = self.root

        for substr in word:

            if tmp.alpha_dict.get(substr):

                tmp = tmp.alpha_dict.get(substr)

                continue

            else:

                # 插入这个值

                tmp.alpha_dict[substr]=TreeNode()

                tmp = tmp.alpha_dict[substr]

        tmp.isword=True



 

       

    def search(self, word):

        """

        :type word: str

        :rtype: bool

        """

        tmp = self.root

        for substr in word:

            if tmp.alpha_dict.get(substr):

                tmp = tmp.alpha_dict.get(substr)

                continue

            else:

                # 插入这个值

                return False

        return tmp.isword

       

    def startsWith(self, prefix):

        """

        :type prefix: str

        :rtype: bool

        """

        tmp = self.root

        for substr in prefix:

            if tmp.alpha_dict.get(substr):

                tmp = tmp.alpha_dict.get(substr)

                continue

            else:

                # 插入这个值

                return False

        return True

       


 

# Your Trie object will be instantiated and called as such:

# obj = Trie()

# obj.insert(word)

# param_2 = obj.search(word)

# param_3 = obj.startsWith(prefix)

使用前缀树来做,就是直接的把一个treenode变为next是一个alpha dict就行了

在保存一个bool值判断到这里是不是一个词语


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

相关文章:

  • Swift Protocols(协议)、Extensions(扩展)、Error Handling(错误处理)、Generics(泛型)
  • 第15章 汇编语言--- 数组与指针
  • C语言渗透和好网站
  • 什么是.net framework,什么是.net core,什么是.net5~8,版本对应关系
  • Node 如何生成 RSA 公钥私钥对
  • LeetCode:106.从中序与后序遍历序列构造二叉树
  • go语言中zero框架项目日志收集与配置
  • 【2024年-7月-6日-开源社区openEuler实践记录】探秘 Qingzhou:开启高效开发与运维新旅程
  • 012-spring的注解开发、bean的属性、IOC实现原理
  • 【服务器】上传文件到服务器并训练深度学习模型下载服务器文件到本地
  • 基于GA遗传优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
  • EL表达式与JSTL
  • Quo Vadis, Anomaly Detection? LLMs and VLMs in the Spotlight 论文阅读
  • Java基础(三):桌球案例
  • Qt https请求报错SSL handshake failed 解决思路方法
  • AI大模型-提示工程学习笔记0
  • 进程通信(8)读写锁
  • LabVIEW手部运动机能实验系统
  • 使用工厂+策略模式实现去除繁琐的if else
  • 菲尼克斯超级工厂落地南京,汽车市场被瞄准
  • FreeRTOS的时间管理
  • CSS过渡(transition)
  • 【Rust自学】8.2. Vector + Enum的应用
  • 第1关:博客系统数据库设计与实现之查询
  • bacnet mstp设备数据 转 opc ua项目案例
  • vue实现平滑滚动到目标标签页