You may assume that all inputs are consist of lowercase letters a-z.
All inputs are guaranteed to be non-empty strings.
解题要点:
大致和#211一样,根据大神211题解法稍微改动了一下。
class Trie(object):
def __init__(self):
"""
Initialize your data structure here.
"""
self.root = {}
def insert(self, word):
"""
Inserts a word into the trie.
:type word: str
:rtype: None
"""
node = self.root
for c in word:
node = node.setdefault(c, {})
node[None] = None
# print self.root
def search(self, word):
"""
Returns if the word is in the trie.
:type word: str
:rtype: bool
"""
def find(word, root):
if not word:
return None in root
c, w = word[0], word[1:]
return c in root and find(w, root[c])
return find(word, self.root)
def startsWith(self, prefix):
"""
Returns if there is any word in the trie that starts with the given prefix.
:type prefix: str
:rtype: bool
"""
def find(word, root):
if not word:
return True
c, w = word[0], word[1:]
return c in root and find(w, root[c])
return find(prefix, self.root)
# 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)