我正在解决Design Add and Search Words Data Structure - LeetCode,但是出现了 Time Limit Exceeded ,我应该怎么解决?哪里可以优化?
class TreeNode:
def __init__(self):
self.children = {}
self.end_of_word = False
# prefix tree
class WordDictionary:
def __init__(self):
self.root = TreeNode()
def addWord(self, word: str) -> None:
current = self.root
for c in word:
if c not in current.children:
current.children[c] = TreeNode()
current = current.children[c]
current.end_of_word = True
def search(self, word: str) -> bool:
# search using recursion
def _search(i, current):
if i == len(word) - 1:
if word[i] == '.':
for child in current.children.values():
if child.end_of_word:
return True
return False
elif word[i] in current.children:
return current.children[word[i]].end_of_word
else:
return False
if word[i] == '.':
for child in current.children.values():
if _search(i + 1, child):
return True
return False
elif word[i] in current.children:
return _search(i + 1, current.children[word[i]])
else:
return False
return _search(0, self.root)

