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
   |