标签:其他 another class cin wrk find code ast 替换
在英语中,我们有一个叫做 词根
(root)的概念,它可以跟着其他一些词组成另一个较长的单词——我们称这个词为 继承词
(successor)。例如,词根an
,跟随着单词 other
(其他),可以形成新的单词 another
(另一个)。
现在,给定一个由许多词根组成的词典和一个句子。你需要将句子中的所有继承词
用词根
替换掉。如果继承词
有许多可以形成它的词根
,则用最短的词根替换它。
你需要输出替换之后的句子。
示例 1:
输入: dict(词典) = ["cat", "bat", "rat"] sentence(句子) = "the cattle was rattled by the battery" 输出: "the cat was rat by the bat"
注:
用最笨的方法居然也给过了!!!
class Solution(object): def replaceWords(self, dict, sentence): """ :type dict: List[str] :type sentence: str :rtype: str """ trie = Trie() for w in dict: trie.add_word(w) words = sentence.split() return " ".join([trie.find_neareast(word) for word in words]) """ dict2 = {w for w in dict} words = sentence.split() return " ".join([self.replace(word, dict2) for word in words]) """ def replace(self, word, dict2): for i in range(1, len(word)+1): if word[:i] in dict2: return word[:i] return word class Node(object): def __init__(self, char="", word=""): self.char = char self.word = word self.children = {} class Trie(object): def __init__(self): self.root = Node() def add_word(self, word): cur = self.root for w in word: if w not in cur.children: cur.children[w] = Node(w) cur = cur.children[w] cur.word= word def find_neareast(self, word): cur = self.root for w in word: if cur.word: return cur.word if w not in cur.children: return word cur = cur.children[w] return word
标签:其他 another class cin wrk find code ast 替换
原文地址:https://www.cnblogs.com/bonelee/p/12583851.html