From 757193083b590687dfb0d214f5cdfc6f91ff14d6 Mon Sep 17 00:00:00 2001 From: Mhrooz Date: Sun, 26 May 2024 18:55:13 +0200 Subject: [PATCH] 208 prefix solution --- 208-240525-pass/main1.py | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 208-240525-pass/main1.py diff --git a/208-240525-pass/main1.py b/208-240525-pass/main1.py new file mode 100644 index 0000000..4ab1198 --- /dev/null +++ b/208-240525-pass/main1.py @@ -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 \ No newline at end of file