一尘不染

通过有效单词将一个单词转换为另一个单词的算法

algorithm

我遇到了这种编辑距离问题的变体:

设计一种将源词转换为目标词的算法。例如:从头到尾,在每个步骤中,您只能替换一个字符,并且该单词必须有效。您将得到一本字典。

显然这是编辑距离问题的一种变体,但是在编辑距离中,我并不关心单词是否有效。因此,如何添加此要求以编辑距离。


阅读 400

收藏
2020-07-28

共1个答案

一尘不染

可以将其建模为图问题。您可以将单词视为图的节点,并且当且仅当它们的长度相同且一个字符不同时,两个节点才被连接。

您可以预处理字典并创建此图,如下所示:

   stack  jack
    |      |
    |      |
   smack  back -- pack -- pick

然后,您可以从单词到代表单词的节点进行映射,为此,您可以使用哈希表,高度平衡的BST …

一旦完成上述映射,您要做的就是查看两个图节点之间是否存在路径,可以使用BFS或DFS轻松完成。

因此,您可以将算法总结为:

preprocess the dictionary and create the graph.
Given the two inputs words w1 and w2
if length(w1) != length(w2)
 Not possible to convert
else
 n1 = get_node(w1)
 n2 = get_node(w2)

 if(path_exists(n1,n2))
   Possible and nodes in the path represent intermediary words
 else
   Not possible
2020-07-28