Design Add and Search Words Data Structure LeetCode solution in Python

1
class TrieNode:
2

3
def __init__(self, val):
4
self.val = val
5
self.children = {}
6
self.isEnd = False
7

8

9
class WordDictionary:
10

11
def __init__(self):
12
self.root = TrieNode("*")
13

14
def addWord(self, word: str) -> None:
15

16
curr = self.root
17

18
for c in word:
19

20
if c not in curr.children:
21
curr.children[c] = TrieNode(c)
22

23
curr = curr.children[c]
24

25
curr.isEnd = True
26

27
def search(self, word: str) -> bool:
28

29
def dfs(root, word):
30
curr = root
31

32
for i in range(len(word)):
33

34
if word[i] == ".":
35
for l in curr.children.values():
36
if dfs(l, word[i + 1 :]) == True:
37
return True
38

39
return False
40

41
if word[i] not in curr.children:
42
return False
43

44
curr = curr.children[word[i]]
45

46
return curr.isEnd
47

48
return dfs(self.root, word)

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0