我有一个text file,其中包含5700个单词,我所拥有的是一个开始单词和一个结束单词,我需要通过在开始单词中一次替换一个字母来达到结束单词。例如,
我有:HEAD-> TAIL。 结果将是:HEAD-> HEAL-> TEAL-> TALL-> TAIL。
我尝试了多种方法,一种与图形有关,另一种与我在默认字典中存储每个单词的邻居有关。我需要实现的是一种蛮力方法,它将替换单词中的每个字母并检查单词列表中是否存在临时单词(通过替换字母形成的单词)。这是我尝试过的:
beginWord = "flour"
endWord = "bread"
WordList = []
with open("wordlist.txt", "r") as w: #reading all the words from the file and stoing in the list
for l in w:
WordList.extend(l.split())
WordList.sort()
#print(WordList)
letters = 'abcdefghijklmnopqrstuvwxyz'
temp_word = beginWord
str1 = ''
def test(beginWord, temp_word, letters, str1):
for j in range(len(beginWord)):
str1 = ''
l_list = list(temp_word)
for i in letters:
l_list[j] = i
str1 = ''.join(l_list)
if str1 in WordList and str1 != beginWord:
print(str1)
WordList.remove(str1)
temp_word = str1
str1 = temp_word
j=0
return str1
WordList.remove(beginWord)
while temp_word != endWord:
temp_word= test(temp_word, temp_word, letters, str1)
现在,当起始词为“面粉”而结束词为“面包”时,此词为 这是我得到的输出:
floor
flood
blood
brood
broad
bread
现在,当我尝试输入其他单词时,例如:女巫->仙女或黑色->白色,我无法到达结尾单词,尽管它会继续替换字母,但它无法到达结尾词。有什么建议吗?
答案 0 :(得分:-1)
您在这里签出解决方案了吗?
https://leetcode.com/problems/word-ladder/solution/
但是,它返回搜索路径的长度,而不是实际序列的长度(您可能需要稍作更改)。