Задача
Имеются две строки A и B.
Ваша задача — найти такую строку C, которая содержит в себе и A и B в качестве подстрок и является кратчайшей среди всех таких возможных строк.
Подстрокой строки называется последовательно идущая подпоследовательность этой строки. Например, строка kbtu является подстрокой строки kbtuopen, но строка fall подстрокой не является.
Входные данные
Первая строка содержит строку A (1⩽|A|⩽105).
Вторая строка содержит строку B (1⩽|B|⩽105).
Гарантируется, что обе строки содержат только строчные латинские буквы.
Выходные данные
Выведите одну строку C.
Тесты
№ | Входные данные | Выходные данные |
---|---|---|
1. | compressing single |
compressingle |
2. | can you |
canyou |
3. | compressiondoneright doner |
compressiondoneright |
4. | details tail |
details |
5. | essential code |
essentialcode |
Код
Решение
В данной задаче необходимо создать строку C, которая будет содержать в себе строки A и B. Рассмотрим два варианта решения задачи. Первый – если строка B полностью содержится в строке A, то выводим строку A. Второй – если строка B содержится в A частично или не содержится вообще, выводим строку A + элементы строки B, которых нет в A.
Для проверки, находится ли строка B в A, воспользуемся функцией contains(). Если попадаем в первый вариант решения задачи, то выводим A. Иначе, создаём цикл, который будет удалять символы в конце первой строки и символы в начале второй, пока они не будут равны. Затем из строки B удаляем элементы, которые входят в строку A, и на выход подаём строку C, которая состоит из строки A и оставшихся элементов строки B.
Ссылки
- Условие задачи на e-olymp
- Код программы на ideone.com
- Засчитанное решение на e-olymp