Leetcode 648 单词替换

英语中有一个叫做词根(root)的概念,我们可在词根后面添加其他一些词,组成另一个较长的单词——即继承词(successor)。例如,词根an跟随着单词other,可以形成新的单词another。

现给定一个由许多词根组成的词典dictionary和一个用空格分隔单词形成的句子sentence。需将句子中的所有继承词用词根替换掉,若继承词有许多可以形成它的词根,则用最短的词根替换它。

你需要输出替换之后的句子。

示例 1:

输入:dictionary = [“cat”,”bat”,”rat”], sentence = “the cattle was rattled by the battery”
输出:”the cat was rat by the bat”

二、解法

本题有两种解法,分别是:

1)基于哈希表的朴素查找法

2) 基于前缀树的最短前缀匹配解法

解法1的思路很直观,即将dictionary中所有的单词放在Hash Table中,然后依次匹配sentence中的每个单词。在匹配时,从每个单词中自左向右滑动窗口取其前缀,然后再Hash Table中进行查找,取最短的即可。

Original: https://www.cnblogs.com/justLittleStar/p/16454721.html
Author: LeonYi
Title: Leetcode 648 单词替换

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/566987/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球