From 116d54ddad3217965efdf250e6c3dd362fe6128a Mon Sep 17 00:00:00 2001 From: Yuvraj Singh Date: Sat, 8 Oct 2022 11:06:22 +0530 Subject: [PATCH] Added solution to leetcode 211 --- ...ign-Add-and-Search-Words-Data-Structure.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Leetcode problems/211-Design-Add-and-Search-Words-Data-Structure.py diff --git a/Leetcode problems/211-Design-Add-and-Search-Words-Data-Structure.py b/Leetcode problems/211-Design-Add-and-Search-Words-Data-Structure.py new file mode 100644 index 00000000..a4537f3c --- /dev/null +++ b/Leetcode problems/211-Design-Add-and-Search-Words-Data-Structure.py @@ -0,0 +1,35 @@ +class Node: + def __init__(self): + self.children = {} + self.endOfWord = False +class WordDictionary: + + def __init__(self): + self.root = Node() + + def addWord(self, word: str) -> None: + cur = self.root + for c in word: + if c not in cur.children: + cur.children[c] = Node() + cur = cur.children[c] + cur.endOfWord = True + + def search(self, word: str, root = None) -> bool: + if root is None: + cur = self.root + else: + cur = root + for c in enumerate(word): + if c[1] == '.': + for k in cur.children.keys(): + if self.search(word[(c[0] + 1):], cur.children[k]): + return True + return False + + else: + if c[1] not in cur.children: + return False + cur = cur.children[c[1]] + return cur.endOfWord +