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

来源:互联网 发布:大数据的教育弊端 编辑:程序博客网 时间:2024/06/08 05:58

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") -> falsesearch("bad") -> truesearch(".ad") -> truesearch("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



0 0
原创粉丝点击