Ctrl K

Сплести две строки

Средняя
Даны три строки: left, right и woven. Проверьте, можно ли получить woven, сплетая left и right: брать буквы то из одной строки, то из другой, каждый раз — очередную ещё не взятую букву выбранной строки. Порядок букв внутри left и внутри right при этом сохраняется, каждая их буква используется ровно один раз, а других букв в woven нет. Брать из одной строки можно сколько угодно букв подряд. Верните True, если такое сплетение существует, иначе False. Дополнительно: получится ли обойтись памятью O(len(right))?
Пример 1
left="tea", right="pot", woven="tpeoat" → True

Буквы woven по очереди берутся то из left, то из right: t(left) p(right) e(left) o(right) a(left) t(right).

Пример 2
left="ab", right="ba", woven="aabb" → False

Первая буква woven — a, её может дать только left. Тогда следующей тоже нужна a, а на очереди лишь b из left и b из right. Сплести не выйдет.

Пример 3
left="", right="xyz", woven="xyz" → True
Ограничения
  • 0 ≤ len(left), len(right) ≤ 100
  • 0 ≤ len(woven) ≤ 200
  • Все строки состоят из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный зеркальный кусок СредняяВсе правильные скобочные строки СредняяНаименьшее число правок СредняяСколькими способами прочитать шифр СредняяНарезка слова на палиндромы Средняя
загружаем Python…
Вход
left="tea", right="pot", woven="tpeoat"
Ожидается
True

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