Итак, это часть функции, которую я пытаюсь создать.
Я не хочу, чтобы код был слишком сложным.
У меня есть список слов,например,
words = ['giraffe', 'elephant', 'ant', 'tiger', 'racoon', 'cat', 'hedgehog', 'mouse']
Идея последовательности слов состоит в том, чтобы следующее слово начиналось с буквы, в которой заканчивалось последнее слово.
(Редактировать: каждое слово не может быть использовано более чемодин раз. Кроме этого нет никаких других ограничений.)
Я хочу, чтобы вывод дал самую длинную цепочку слов, которая в данном случае:
['hedgehog', 'giraffe', 'elephant', 'tiger', 'racoon']
Я не совсемуверен, как это сделать, у меня были разные попытки попробовать это.Один из них ...
Этот код правильно находит цепочку слов, если мы начинаем с определенного слова из списка, например слов [0] (т. Е. «Жираф»):
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']
НО, я хочу найти максимально длинную цепочку слов (объяснено выше).
Мой метод: Итак, я попытался использоватьприведенный выше рабочий код, который я написал и перебрал, используя каждое слово из списка в качестве отправной точки и находя цепочку слов для каждого слова [0], слова [1], слова [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 должным образом и в конечном итоге повторяли слова снова.Надеюсь, я не сделал это слишком утомительным или запутанным ... Спасибо!