Ctrl K

Самая короткая строка с двумя словами внутри

Сложная
Даны два слова first и second. Нужно найти самую короткую строку, из которой можно получить каждое из них, вычеркнув некоторые символы (оставшиеся символы порядок не меняют). Таких строк обычно несколько, поэтому ответ определяется однозначно таким правилом. Строку собирают с конца, по одной букве, пока оба слова не будут исчерпаны. На каждом шаге смотрят на последние ещё не использованные буквы обоих слов: 1. если можно поставить последнюю букву first (засчитав её только для first) и при этом итоговая строка всё ещё может получиться самой короткой — ставят её; 2. иначе, если так можно поставить последнюю букву second (только для second) — ставят её; 3. иначе последние буквы слов совпадают — ставят эту букву, засчитывая её для обоих слов. Верните получившуюся строку.
Пример 1
first="cat", second="cut" → 'cuat'

Общие буквы c и t используются один раз, остаются a и u: длина 4. Собираем с конца: t — общая для обоих слов, затем a из first, затем u из second и общая c. Получается cuat.

Пример 2
first="ab", second="ba" → 'bab'

Подходят aba и bab. Последней буквой может стать b из first, поэтому ответ bab.

Пример 3
first="pine", second="pine" → 'pine'

Слова совпадают, и само слово уже содержит оба.

Ограничения
  • 1 ≤ len(first), len(second) ≤ 1000
  • first и second состоят из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиШаблон с точкой и звёздочкой СложнаяСамый длинный сбалансированный отрезок скобок СложнаяПодходит ли строка под шаблон СложнаяПеретасовка разрезами СложнаяСколькими способами вычеркнуть Сложная
загружаем Python…
Вход
first="cat", second="cut"
Ожидается
'cuat'

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 102 теста на сервере, включая скрытые.