【发布时间】:2022-01-10 19:35:54
【问题描述】:
我想构建一个算法,它返回最短的更改序列,将一个三位数的字符串转换为另一个三位数的字符串。中间词仅限于预定义的字符串数组。
例如,我有输入 start = ABC、end = DEF 和 words[] = {ABC, XZZ, AEC, DEF, AEF}。该算法应返回{ABC, AEC, AEF, DEF}。变换的每一步,只能改变一个字母,中间词必须都是words[]的元素。如果这样的转换是不可能的,我会返回null。如果start 和end 相同,那么我将返回一个空列表。
我一直在考虑这个问题,我考虑了每一步,检查了words[] 中的所有元素,以找到一个与当前元素不同的元素并以这种方式进行,但我不确定如何将其表述为代码。我可以使用 TrieMap 吗?
【问题讨论】:
-
SO 不是代码编写服务,请在此处粘贴您的尝试
-
你可以用一个特殊的 trie 来解决这个问题,对于字典中的每个单词,你添加每个排列,
*替换一个字符。这可以帮助您找到仅在一个字符上有所不同的单词之间的边缘。