Die Aufgabe
Schreiben Sie ein Programm oder eine Funktion, die mit drei Zeichenfolgen A, B, C
eine Ausgabezeichenfolge erzeugt, durch die jede Instanz von B
in A
rekursiv ersetzt wurde C
. Rekursives Ersetzen bedeutet das Wiederholen eines Ersetzens, wobei bei jedem Schritt alle nicht überlappenden Instanzen von B
in A
(gierig von links nach rechts gewählt) durch ersetzt werden, C
bis B
nicht mehr in enthalten ist A
.
Input-Output
- Sie können eine der Standardmethoden für E / A verwenden .
- Zeichenfolgen enthalten nur druckbare ASCII-Zeichen (und können beliebige davon enthalten).
B
wird niemals eine leere Zeichenfolge sein, währendA
undC
möglicherweise.- Zeichenfolgen sind als Klartext zu betrachten, Sie können sie beispielsweise nicht
B
als Regex-Muster behandeln. - Einige Kombinationen von Eingaben werden niemals beendet. Ihr Programm kann in diesen Fällen alles tun.
Testfälle
Diese sind im Format: 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}
)
Beispiele, die nicht enden:
grow/ow/oow
loop/lo/lo
downpercase is down
((())())())/()/