class Tirenode:
def __init__(self):
self.child=[None]*26
self.end_flag=False
class WordDictionary:
def __init__(self):
self.root=Tirenode()
def addWord(self, word: str) -> None:
node=self.root
for i in word:
idx=ord(i)-ord('a')
if(not node.child[idx]):
new_node=Tirenode()
node.child[idx]=new_node
node=node.child[idx]
node.end_flag=True
def search(self, word: str) -> bool:
return self.helper(word,self.root,0)
def helper(self,word,node,i):
#success
if(len(word)==i):
return node.end_flag
if(word[i]!='.'):
idx=ord(word[i])-ord('a')
if(not node.child[idx]):
return False
return self.helper(word,node.child[idx],i+1)
else:
for j in node.child:
if(j):
if(self.helper(word,j,i+1)):
return True
return False
leetcode .211 前缀树
最新推荐文章于 2024-07-10 19:27:42 发布