回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>所以,这是我要做的函数的一部分。在</p>
<p>我不想代码太复杂。在</p>
<p>我有一个单词表,例如</p>
<pre><code>words = ['giraffe', 'elephant', 'ant', 'tiger', 'racoon', 'cat', 'hedgehog', 'mouse']
</code></pre>
<p>单词链序列的概念是下一个单词从最后一个单词结束的字母开始。在</p>
<p>(编辑:每个单词不能重复使用。除此之外,没有其他约束。)</p>
<p>我希望输出给出最长的词链序列,在本例中为:</p>
^{pr2}$
<p>我真的不知道该怎么做,我尝试了不同的尝试。其中一个。。。在</p>
<p>如果我们从列表中的某个特定单词开始,例如单词[0](所以是“长颈鹿”),则此代码可以正确地找到单词链:</p>
<pre><code>words = ['giraffe', 'elephant', 'ant', 'tiger', 'racoon', 'cat', 'hedgehog', 'mouse']
word_chain = []
word_chain.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(words[0])
for word in words:
for char in word[0]:
if char == word_chain[-1][-1]:
word_chain.append(word)
print(word_chain)
</code></pre>
<p>输出:</p>
<pre><code>['giraffe', 'elephant', 'tiger', 'racoon']
</code></pre>
<p>但是,我想找到尽可能长的单词链(如上所述)。在</p>
<p><strong>我的方法:</strong>所以,我试着用我写的上面的工作代码进行循环,以列表中的每个单词为起点,找到每个单词[0]、单词[1]、单词[2]等的单词链。然后,我尝试使用if语句查找最长的单词链,并将其长度与之前的最长链进行比较,但我不能把它做好,我真的不知道这是怎么回事。在</p>
<pre><code>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)
</code></pre>
<p>这是我的第n次尝试,我想这一次打印的是一个空列表,在此之前我有过不同的尝试,但都没有正确地清除单词链列表,最后又重复了一次单词。在</p>
<p>非常感谢你的帮助。希望我没有把这件事弄得太复杂或令人困惑。。。谢谢!在</p>