208 prefix solution
This commit is contained in:
parent
21e70697e0
commit
757193083b
42
208-240525-pass/main1.py
Normal file
42
208-240525-pass/main1.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
class TrieNode:
|
||||||
|
def __init__(self, val = ''):
|
||||||
|
self.child = []
|
||||||
|
self.is_word = False
|
||||||
|
self.val = val
|
||||||
|
self.child_map = {}
|
||||||
|
class Trie:
|
||||||
|
def __init__(self):
|
||||||
|
self.root = TrieNode()
|
||||||
|
|
||||||
|
def insert(self, word: str) -> None:
|
||||||
|
parent_node = self.root
|
||||||
|
for idx, letter in enumerate(word):
|
||||||
|
if letter not in parent_node.child_map:
|
||||||
|
new_node = TrieNode(letter)
|
||||||
|
parent_node.child.append(new_node)
|
||||||
|
parent_node.child_map[letter] = len(parent_node.child) - 1
|
||||||
|
parent_node = new_node
|
||||||
|
else:
|
||||||
|
idx = parent_node.child_map[letter]
|
||||||
|
parent_node = parent_node.child[idx]
|
||||||
|
parent_node.is_word = True
|
||||||
|
|
||||||
|
def search(self, word: str) -> bool:
|
||||||
|
parent_node = self.root
|
||||||
|
for idx, letter in enumerate(word):
|
||||||
|
if letter not in parent_node.child_map:
|
||||||
|
return False
|
||||||
|
idx = parent_node.child_map[letter]
|
||||||
|
parent_node = parent_node.child[idx]
|
||||||
|
if parent_node.is_word == False:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def startsWith(self, prefix: str) -> bool:
|
||||||
|
parent_node = self.root
|
||||||
|
for idx, letter in enumerate(prefix):
|
||||||
|
if letter not in parent_node.child_map:
|
||||||
|
return False
|
||||||
|
idx = parent_node.child_map[letter]
|
||||||
|
parent_node = parent_node.child[idx]
|
||||||
|
return True
|
Loading…
Reference in New Issue
Block a user