Trie 简易实现

找到一种Trie 的实现:简单易懂,高效

trie适合使用的情况
查看string是否valid
查看string是否存在
class Trie(object):
    def __init__(self):
        """
        Initialize your data structure here.
        Trie 的树用一颗个多层dic来代表
        """
        self.tr = {}
        
    def insert(self, word):
        """
        Inserts a word into the trie.
        :type word: str
        :rtype: void
        插入单个单词,对每个字母进行插入,
        setdefault(Key,Val),会完成插入dict.insert(val),
        并且返回 val,这是返回一个空辞典,具体使用:
        >>> a.setdefault("1",1) 
        1
        >>> a.setdefault("1",2)
        1
       >>> a
       {'1': 1}
        """        
        temp = self.tr
        for char in word:
            temp = temp.setdefault(char,{})
        temp["end"] = ""
        # print self.tr
        
    def search(self, word):
        """
        Returns if the word is in the trie.
        :type word: str
        :rtype: bool
        不停的进入dict内部的dict进行搜索
        """
        temp = self.tr
        for char in word:
            if char in temp:
                temp = temp[char]
                continue
            return False
        return "end" in temp
        

    def startsWith(self, prefix):
        """
        Returns if there is any word in the trie that starts with the given 
         prefix.
        :type prefix: str
        :rtype: bool

        与 search同理
        """
        temp = self.tr
        for char in prefix:
            if char in temp:
                temp = temp[char]
                continue
            return False
        return True
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,613评论 25 709
  • 有人问我,7mall商城是什么?7mall商城是德家大家巨资打造的环球移动商城,通过商城,我们聚集全球大众精品,同...
    wen566阅读 460评论 0 0
  • 一场梦魇不知是真是假。 01 引子 02 分班 03 开学第一天 04 教室
    月洛阅读 165评论 0 0
  • 语法 意义 typeof 是一元运算符,放在单个操作数的前面,操作数可以是任何类型。返回值为它的类型。 类型 注意...
    河的左岸阅读 330评论 0 0
  • 一幅好的作品有时需要等待很久,分享顾城的一首小诗《等》 等世界都湿了,星星亮得怕人 我收起伞,收起滴雨的云 时间转...
    一轮明月亘古今阅读 453评论 2 1