题目链接 | 208. 实现 Trie (前缀树) |
---|---|
思路 | 模板题 - Trie树 |
题解链接 | 官方题解 |
关键点 | 无 |
时间复杂度 | \(O(\sum_{i}\#\text{word}_{i})\) |
空间复杂度 | \(O(\sum_{i}\#\text{word}_{i})\) |
代码实现:
class Trie:def __init__(self):self.children = [None] * 26self.isEnd = Falsedef insert(self, word: str) -> None:node = selffor ch in word:ch = ord(ch) - ord('a')if not node.children[ch]:node.children[ch] = Trie()node = node.children[ch]node.isEnd = Truedef search(self, word: str) -> bool:node = self._searchPrefix(word)return node is not None and node.isEnddef startsWith(self, prefix: str) -> bool:return self._searchPrefix(prefix) is not Nonedef _searchPrefix(self, prefix) -> "Trie":node = selffor ch in prefix:ch = ord(ch) - ord('a')if not node.children[ch]:return Nonenode = node.children[ch]return node