1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| class Trie: def __init__(self): self.children = [None] * 26 self.isEnd = False
def insert(self, word: str) -> None: node = self for c in word: idx = ord(c) - ord('a') if not node.children[idx]: node.children[idx] = Trie() node = node.children[idx] node.isEnd = True
def search(self, word: str) -> bool: node = self for c in word: idx = ord(c) - ord('a') if not node.children[idx]: return False else: node = node.children[idx] return node.isEnd
def startsWith(self, prefix: str) -> bool: node = self for c in prefix: idx = ord(c) - ord('a') if not node.children[idx]: return False else: node = node.children[idx] return True
|