211 Add and Search Word - Data Structure Design
class TrieNode(object):
def __init__(self):
self.children = dict()
self.isWord = False
class WordDictionary(object):
def __init__(self):
"""
Initialize your data structure here.
"""
self.root = TrieNode()
def addWord(self, word):
"""
Adds a word into the data structure.
:type word: str
:rtype: None
"""
node = self.root
for letter in word:
child = node.children.get(letter)
if child is None:
node.children[letter] = TrieNode()
node = node.children[letter]
node.isWord = True
def search(self, word):
return self.find(self.root, word)
def find(self, node, word):
if word == '':
return node.isWord
if word[0] == '.':
for x in node.children:
if self.find(node.children[x], word[1:]):
return True
else:
child = node.children.get(word[0])
if child:
return self.find(child, word[1:])
return False