Schreiben Sie ein Programm oder eine Funktion, die bei zwei ASCII-Zeichenfolgen Aund BZeichenfolgen erzeugt A'und B'deren gemeinsame Teilzeichenfolgen an ihrer Stelle umgekehrt werden. Der Prozess zum Finden A'ist wie folgt:
A'ist anfangs leer.- Wenn das erste Zeichen von in
AistB, suchen Sie das längste Präfix,Adessen Teilzeichenfolge von istB. Entfernen Sie dieses Präfix ausAund fügen Sie seine Umkehrung hinzuA'. - Entfernen Sie andernfalls dieses erste Zeichen aus
Aund fügen Sie es hinzuA'. - Wiederholen Sie die Schritte 2-3, bis sie
Aleer sind.
Das Finden B'erfolgt ähnlich.
Beispiel
Betrachten wir die Zeichenfolgen A = "abc bab"und B = "abdabc". Denn A'genau das passiert:
A = "abc bab": Das erste Zeichen"a"steht in B und das längste Präfix von A in B ist"abc". Wir entfernen dieses Präfix von A und fügen seine Umkehrung"cba"zu A 'hinzu.A = " bab": Das erste Zeichen" "ist nicht in B, also entfernen wir dieses Zeichen aus A und fügen es A 'hinzu.A = "bab": Das erste Zeichen"b"steht in B und das längste Präfix von A in B ist"b". Wir entfernen dieses Präfix von A und fügen seine Umkehrung (die noch ist"b") zu A 'hinzu.A = "ab": Das erste Zeichen"a"steht in B und das längste Präfix von A in B ist"ab". Wir entfernen dieses Präfix von A und fügen seine Umkehrung"ba"zu A 'hinzu.A = "": A ist leer, also hören wir auf.
So bekommen wir A' = "cba" + " " + "b" + "ba" = "cba bba". Für B 'ist der Prozess ähnlich:
B = "abdabc" -> "a" in A, remove prefix "ab"
B = "dabc" -> "d" not in A, remove "d"
B = "abc" -> "a" in A, remove prefix "abc"
So bekommen wir B' = "ba" + "d" + "cba" = "badcba".
Schließlich geben wir die beiden Zeichenfolgen zurück, dh
(A', B') = ("cba bba", "badcba")
Testfälle
"abc bab", "abdabc" -> "cba bba", "badcba"
"abcde", "abcd bcde" -> "dcbae", "dcba edcb"
"hello test", "test banana" -> "hello tset", "tset banana"
"birds flying high", "whistling high nerds" -> "bisdr flyhgih gni", "wihstlhgih gni nesdr"
Der kürzeste Code in Bytes gewinnt.
"cba bba", "badcba"Anführungszeichen und Komma enthält?