这是一个面试问题。我需要将字符串a转换为b,这样一次只能更改一个字母,每次更改后,转换后的字符串都在字典中。您需要以最少的转换次数执行此操作。例如,从cat - > boy转换可以按如下方式完成:
cat-->bat-->bot-->boy (if dictionary has bat and bot)
我可以考虑为这个问题创建一个前缀树(trie),但是一旦我有了一个trie,我不确定如何继续。有人可以提出可行的方法吗?我试图避免使用蛮力方法。
答案 0 :(得分:1)
如果您想知道计算单个字符编辑的最小数量,请查看Levenshtein distance。但是,这假设只允许插入,删除和替换。
对于您的示例,更改cat - >男孩的Levenshtein距离为3,有三个替换(c-> b,a-> o,t-> y)。
如果也允许换位,那么您应该考虑Damerau–Levenshtein distance。
例如,cat - > cta的Levenshtein距离为2,而Damerau-Levenshtein距离为1
答案 1 :(得分:0)
您已将问题分解为前缀trie。
要找到解决方案还需要采取更多措施: