words и массив colors той же длины: colors[i] — цвет карточки, на которой написано слово words[i].
Составьте эстафету: выберите несколько карточек, сохраняя их порядок в массиве (пропускать можно любые), так, чтобы у любых двух соседних выбранных карточек:
- цвета были разными;
- слова были одинаковой длины и отличались ровно в одной позиции.
Верните слова самой длинной эстафеты по порядку. Если самых длинных эстафет несколько, выбирайте так: последняя карточка — с наименьшим возможным индексом; затем, двигаясь от конца к началу, каждая предыдущая карточка — тоже с наименьшим возможным индексом (при условии, что эстафета остаётся самой длинной).
Эстафета из одной карточки допустима всегда.words=['cold', 'cord', 'card', 'ward', 'word'], colors=[1, 2, 1, 2, 2] → ['cold', 'cord', 'card', 'ward']
Цепочка cold → cord → card → ward: соседние слова отличаются ровно одной буквой, а их цвета чередуются. word к ward не присоединить: у них один цвет.
words=['map', 'mop', 'top'], colors=[3, 3, 1] → ['mop', 'top']
map и mop одного цвета, а map и top отличаются двумя буквами. Самая длинная цепочка — mop → top.
words=['sun', 'moon', 'soon'], colors=[1, 2, 3] → ['moon', 'soon']
Подходят moon → soon (длина 2). Цепочки длины 2 больше нет, так что ответ однозначен.
n = len(words) = len(colors) ≤ 1000len(words[i]) ≤ 10, только строчные латинские буквыcolors[i] ≤ nwords=['cold', 'cord', 'card', 'ward', 'word'], colors=[1, 2, 1, 2, 2]
['cold', 'cord', 'card', 'ward']
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 251 тест на сервере, включая скрытые.