给定单词成为字典单词的最小删除次数

时间:2016-01-20 22:25:25

标签: algorithm backtracking

  

将字典作为哈希表。找到最小的#   给定单词所需的删除,以使其匹配任何单词   字典。

是否有一些聪明的技巧以低于指数复杂度(尝试所有可能的组合)来解决这个问题?

2 个答案:

答案 0 :(得分:3)

首先,假设你在哈希表中有一个单词w,你的单词是x。当且仅当w是x的子序列时,你可以删除x中的字母以形成w,在这种情况下,你需要从x删除形成w的字母数由| x - w |给出。所以肯定有一个选择就是遍历哈希表,并且对于每个单词,看看x是否是该单词的子序列,采取你在表中找到的最佳匹配。

为了分析这个操作的运行时间,让我们假设你的哈希表中总共有n个单词,并且它们的总长度是L.那么这个操作的运行时间是O(L),因为你将处理每个字符最多一次所有的话。初始方法的复杂性是O(| x |·2 | x | ),因为通过删除x和x中的字母可以得到2个 | x | 可能的单词你将花费O(| x |)时间处理每一个。根据字典的大小和单词的大小,一种算法可能比另一种更好,但我们可以说运行时为O(min {L,| x |·2 | x | )如果你采取两种方法中的更好。

答案 1 :(得分:0)

您可以构建trie,然后查看给定单词的位置。单词深度与最近现有父级的差异是所需的删除次数。