Python文字阶梯

时间:2019-12-02 17:35:27

标签: python

我有一个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

现在,当我尝试输入其他单词时,例如:女巫->仙女或黑色->白色,我无法到达结尾单词,尽管它会继续替换字母,但它无法到达结尾词。有什么建议吗?

1 个答案:

答案 0 :(得分:-1)

您在这里签出解决方案了吗?

https://leetcode.com/problems/word-ladder/solution/

但是,它返回搜索路径的长度,而不是实际序列的长度(您可能需要稍作更改)。