Задание
Напишите программу или функцию, которая с учетом трех строк A, B, C
создает выходную строку, в которой каждый экземпляр B
in A
был рекурсивно заменен C
. Под рекурсивной подстановкой понимается повторение подстановки, когда на каждом шаге все неперекрывающиеся экземпляры B
in A
(выбираются жадно слева направо) заменяются на, C
пока B
больше не содержится в A
.
Ввод, вывод
- Вы можете использовать любой из методов по умолчанию для ввода / вывода .
- Строки будут содержать только печатаемые символы ASCII (и могут содержать любые из них).
B
никогда не будет пустой строкой,A
аC
может быть.- Строки следует рассматривать как открытый текст, например, вы не можете рассматривать их
B
как шаблон Regex. - Некоторые комбинации входов никогда не прекратятся. Ваша программа может делать что угодно в этих случаях.
Контрольные примеры
Это в формате: A/B/C\nOutput
Hello, world!/world!/PPCG
Hello, PPCG
Uppercase is up/up/down
Uppercase is down
ababababa/aba/ccc
cccbcccba
delete/e/{empty string}
dlt
{empty string}/no/effect
{empty string}
llllrrrr/lr/rl
rrrrllll
+-+-+-+/+-+/+
+
ababababa/aba/bada
badabbadbada
abaaba/aba/ab
abb
((())())())/()/{empty string}
)
Примеры, которые не заканчиваются:
grow/ow/oow
loop/lo/lo
downpercase is down
((())())())/()/