Implement Magic Dictionary LeetCode solution in Python

1
class MagicDictionary:
2

3
def __init__(self):
4
TrieNode = lambda: defaultdict(TrieNode)
5
self.root = TrieNode()
6

7
def buildDict(self, dictionary: List[str]) -> None:
8
for s in dictionary:
9
cur = self.root
10
for c in s:
11
cur = cur[ord(c) - ord("a")]
12
cur["$"] = True
13

14
def search(self, searchWord: str) -> bool:
15
def find(i, cur, mis):
16
if i == len(searchWord) and mis == 0:
17
return "$" in cur
18
if mis < 0:
19
return False
20
if i == len(searchWord) and mis != 0:
21
return False
22
ind = ord(searchWord[i]) - ord("a")
23
ans = False
24
for j in range(26):
25
if j in cur:
26
if j != ind:
27
ans |= find(i + 1, cur[j], mis - 1)
28
else:
29
ans |= find(i + 1, cur[j], mis)
30
return ans
31

32
return find(0, self.root, 1)

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0