Solution:
# T:O(n) S:O(1) class TrieNode: # Initialize your data structure here. def __init__(self): self.is_string = False self.leaves = {} class Trie: def __init__(self): self.root = TrieNode() # @param {string} word # @return {void} # Inserts a word into the trie. def insert(self, word): cur = self.root for c in word: if not c in cur.leaves: cur.leaves[c] = TrieNode() cur = cur.leaves[c] cur.is_string = True # @param {string} word # @return {boolean} # Returns if the word is in the trie. def search(self, word): res, node = self.childSearch(word) if res: return node.is_string return False # @param {string} prefix # @return {boolean} # Returns if there is any word in the trie # that starts with the given prefix. def startsWith(self, prefix): return self.childSearch(prefix)[0] def childSearch(self, word): cur = self.root for c in word: if c in cur.leaves: cur = cur.leaves[c] else: return False, None return True, curRun Time: 348 ms
No comments:
Post a Comment