标签:python 递归 des 没有 __init__ 字典树 解题思路 ini rac
设计一个包含下面两个操作的数据结构:addWord(word), search(word)
addWord(word)会在数据结构中添加一个单词。而search(word)则支持普通的单词查询或是只包含. 和a-z的简易正则表达式的查询。一个 . 可以代表一个任何的字母。
addWord("bad") addWord("dad") addWord("mad") search("pad") // return false search("bad") // return true search(".ad") // return true search("b..") // return true
class TrieNode(object): def __init__(self): self.child = {} self.isword = False class WordDictionary(object): def __init__(self): """ Initialize your data structure here. """ self.root = TrieNode() def addWord(self, word): """ Adds a word into the data structure. :type word: str :rtype: void """ node = self.root for i in word: if not node.child.get(i): node.child[i] = TrieNode() node = node.child[i] node.isword = True def search(self, word): """ Returns if the word is in the data structure. A word could contain the dot character ‘.‘ to represent any one letter. :type word: str :rtype: bool """ return self.find(self.root, word) def find(self, node, word): if word == "": return node.isword if word[0] == ‘.‘: for key in node.child: if self.find(node.child.get(key), word[1:]): return True else: if not node.child.get(word[0]): return False return self.find(node.child.get(word[0]),word[1:]) return False #防止44行里面的节点后面没有key值或是返回false # Your WordDictionary object will be instantiated and called as such: # obj = WordDictionary() # obj.addWord(word) # param_2 = obj.search(word)
LeetCode 211. Add and Search Word - Data structure design
标签:python 递归 des 没有 __init__ 字典树 解题思路 ini rac
原文地址:http://www.cnblogs.com/LiCheng-/p/6594080.html