208. Implement Trie (Prefix Tree)

问题描述

Implement a trie with insert, search, and startsWith methods.

思路

用Dictionary做,用嵌套dictionary的方法实现
对于一个单词中的每个字母,存为key,而value则是新建的dictionary,里面存放以下一个字母作为key、新建的dictionary作为value,以此类推,并用特殊符号标记出单词结尾
例如,insert('cjh'), 就会得到{'c': {'j': {'h': {'$': '$'}}}}


    def __init__(self):
        """
        Initialize your data structure here.
        """
        self.root = {}

    def insert(self, word):
        """
        Inserts a word into the trie.
        :type word: str
        :rtype: void
        """
        curDict = self.root
        for x in word:
            if x not in curDict:
                curDict[x] = {}
            curDict = curDict[x]
        curDict['$'] = '$'
        # print(self.root)

    def search(self, word):
        """
        Returns if the word is in the trie.
        :type word: str
        :rtype: bool
        """
        curDict = self.root
        for i in word:
            if i not in curDict:
                return False
            curDict = curDict.get(i)
        if '$' in curDict:
            return True
        return False

    def startsWith(self, prefix):
        """
        Returns if there is any word in the trie that starts with the given prefix.
        :type prefix: str
        :rtype: bool
        """
        curDict = self.root
        for i in prefix:
            if i not in curDict:
                return False
            curDict =curDict.get(i)
        return True

参考

https://leetcode.com/problems/implement-trie-prefix-tree/discuss/130893/Python-184ms-beats-100

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容