Implement a trie with
insert, search, and startsWith methods.class Trie(object): def __init__(self): """ Initialize your data structure here. """ self.tree = {} self.tree[0] = {} self.new_node_idx = 1 def insert(self, word): """ Inserts a word into the trie. :type word: str :rtype: void """ current_node = 0 word = word + '$' for i in range(len(word)): current_symbol = word[i] if current_symbol in self.tree[current_node]: current_node = self.tree[current_node][current_symbol] else: self.tree[current_node][current_symbol] = self.new_node_idx self.tree[self.new_node_idx] = {} current_node = self.new_node_idx self.new_node_idx += 1 def search(self, word): """ Returns if the word is in the trie. :type word: str :rtype: bool """ word = word + '$' current_node = 0 for i in range(len(word)): current_symbol = word[i] if current_symbol in self.tree[current_node]: current_node = self.tree[current_node][current_symbol] else: return False return True def startsWith(self, prefix): """ Returns if there is any word in the trie that starts with the given prefix. :type prefix: str :rtype: bool """ current_node = 0 for i in range(len(prefix)): cur_symbol = prefix[i] if cur_symbol in self.tree[current_node]: current_node = self.tree[current_node][cur_symbol] else: return False return True # Your Trie object will be instantiated and called as such: # obj = Trie() # obj.insert(word) # param_2 = obj.search(word) # param_3 = obj.startsWith(prefix)
No comments:
Post a Comment