algorithm – 使用单词字典将字符串a转换为b

你有一个单词词典和两个字符串a和b.

如何通过一次只更改一个字符并确保所有中间单词都在字典中来将a转换为b?

例:

dictionary: {"cat", "bat", "hat", "bad", "had"}
a = "bat"
b = "had"

解:

“bat” – > “坏” – > “有”

编辑:下面给出的解决方案建议从字典单词构建图形,使得每个单词将具有仅由一个字符区别的所有其他单词的边缘.
如果字典太大,这可能有点困难(让我们说我们不是只讨论英语单词).

此外,即使这是可以接受的,创建这样的图形的最佳算法是什么?查找从单词到所有其他单词的边缘将是O(n),其中n是字典大小.总图形结构是O(n2)?有更好的算法吗?

这不是作业问题,而是面试问题.

最佳答案 您可以将此视为图搜索问题.每个单词都是图中的一个节点,如果两个单词之间只有一个字母,则它们之间有一条边.在此图表上运行
BFS将找到起始单词和目标单词之间的最短路径(如果可以将一个单词转换为另一个单词),并且将报告无法执行此操作.

点赞