所以,这是我正在尝试创建的函数的一部分。
我不想让代码太复杂。
我有一个单词列表,例如
words = ['giraffe', 'elephant', 'ant', 'tiger', 'racoon', 'cat', 'hedgehog', 'mouse']
单词链序列的想法是下一个单词以上一个单词结尾字母作为开头。(编辑:每个单词只能使用一次。除此之外没有其他限制。)
我希望输出最长的单词链序列,这种情况下为:
['hedgehog', 'giraffe', 'elephant', 'tiger', 'racoon']
我不太确定该如何做,我有几次尝试。其中一种...
如果我们从列表中的特定单词(例如 words[0],即“giraffe”)开始,此代码可以正确找到单词链:
words = ['giraffe', 'elephant', 'ant', 'tiger', 'racoon', 'cat', 'hedgehog', 'mouse']
word_chain = []
word_chain.append(words[0])
for word in words:
for char in word[0]:
if char == word_chain[-1][-1]:
word_chain.append(word)
print(word_chain)
输出:
['giraffe', 'elephant', 'tiger', 'racoon']
但是,我想找到可能最长的单词链(如上所述)。
我的方法:因此,我尝试使用上面的可行代码,并循环遍历,使用列表中的每个单词作为起点,找到每个word[0]、word[1]、word[2]等单词链。然后,我尝试使用if语句查找最长的单词链,并将其长度与先前最长链进行比较,但我无法正确完成它,也不知道这会带来什么。
words = ['giraffe', 'elephant', 'ant', 'tiger', 'racoon', 'cat', 'hedgehog', 'mouse']
word_chain = []
max_length = 0
for starting_word_index in range(len(words) - 1):
word_chain.append(words[starting_word_index])
for word in words:
for char in word[0]:
if char == word_chain[-1][-1]:
word_chain.append(word)
# Not sure
if len(word_chain) > max_length:
final_word_chain = word_chain
longest = len(word_chain)
word_chain.clear()
print(final_word_chain)
这是我第n次尝试,我认为这个会打印一个空列表。在这之前我有过其他尝试,但没有正确地清除word_chain列表,最终导致单词重复。
非常感谢任何帮助。希望我没有让事情变得太繁琐或令人困惑...谢谢!