您的位置:首页 > 其它

211. Add and Search Word - Data structure design【M】【91】

2016-05-27 20:37 375 查看
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
.

click to show hint.

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: