Design a data structure that supports the following two operations:
void addWord(word) bool search(word)
search(word) can search a literal word or a regular expression string containing only letters a-z or .. A . means it can represent any one letter.
For example:
addWord("bad")
addWord("dad")
addWord("mad")
search("pad") -> false
search("bad") -> true
search(".ad") -> true
search("b..") -> true
Note:
You may assume that all words are consist of lowercase letters a-z.
You should be familiar with how a Trie works. If not, please work on this problem:
Implement Trie (Prefix Tree) first.
Subscribe to see which companies asked this question
本来应该用trie,不过看来散列也可以
class WordDictionary(object):
def __init__(self):
self.dic = {}
def addWord(self, word):
l = len(word)
if l in self.dic.keys():
self.dic[l].append(word)
else:
self.dic[l] = [word]
def search(self, word):
l = len(word)
#print self.dic
if '.' not in word:
return (word in self.dic.get(l,[]))
li = self.dic.get(l,[])
for v in li:
flag = True
for index,c in enumerate(word):
if c == v[index] or c == '.':
flag = True
else:
flag = False
break
if flag:
return True
return False

本文介绍了一个单词字典的数据结构实现,该结构支持两种操作:添加单词(addWord)和搜索(search)。搜索不仅可以查找确切的单词,还可以使用简单的正则表达式(包含字母a-z或.)进行模式匹配。
462

被折叠的 条评论
为什么被折叠?



