Implement Magic Dictionary LeetCode solution in Python
1class MagicDictionary:23def __init__(self):4TrieNode = lambda: defaultdict(TrieNode)5self.root = TrieNode()67def buildDict(self, dictionary: List[str]) -> None:8for s in dictionary:9cur = self.root10for c in s:11cur = cur[ord(c) - ord("a")]12cur["$"] = True1314def search(self, searchWord: str) -> bool:15def find(i, cur, mis):16if i == len(searchWord) and mis == 0:17return "$" in cur18if mis < 0:19return False20if i == len(searchWord) and mis != 0:21return False22ind = ord(searchWord[i]) - ord("a")23ans = False24for j in range(26):25if j in cur:26if j != ind:27ans |= find(i + 1, cur[j], mis - 1)28else:29ans |= find(i + 1, cur[j], mis)30return ans3132return find(0, self.root, 1)