leetcode 211. 添加与搜索单词 - 数据结构设计

设计一个支持以下两种操作的数据结构:

void addWord(word)
bool search(word)

search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a-z 。 . 可以表示任何一个字母。

示例:

addWord("bad")
addWord("dad")
addWord("mad")
search("pad") -> false
search("bad") -> true
search(".ad") -> true
search("b..") -> true

说明:

你可以假设所有单词都是由小写字母 a-z 组成的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class WordDictionary:
def __init__(self):
self.root = {}

def addWord(self, word):
k = len(word)
if k in self.root.keys():
self.root.get(k).add(word)
else:
self.root.setdefault(k, set([word]))

def search(self, word):
k = len(word)
if k in self.root.keys():
ls = list(self.root.get(k))

if word in ls:
return True
for i, w in enumerate(word):
if w == '.':
continue
ls = [words for words in ls if words[i] == w]
if not ls:
return False
return True

else:
return False