Écrivez un programme ou une fonction qui, étant donné deux chaînes ASCII A
et B
, produira des chaînes A'
et B'
où les sous-chaînes communes sont inversées à leur place. Le processus de recherche A'
est le suivant:
A'
est initialement vide.- Si le premier caractère de
A
est dansB
, recherchez le préfixe le plus longA
qui est une sous-chaîne deB
. Supprimez ce préfixe deA
et ajoutez son inversion àA'
. - Sinon, supprimez ce premier caractère
A
et ajoutez-le àA'
. - Répétez les étapes 2-3 jusqu'à ce qu'il
A
soit vide.
La recherche B'
se fait de la même manière.
Exemple
Examinons les chaînes A = "abc bab"
et B = "abdabc"
. Car A'
c'est ce qui se passe:
A = "abc bab"
: Le premier caractère"a"
est en B et le préfixe le plus long de A trouvé en B est"abc"
. Nous supprimons ce préfixe de A et ajoutons son inversion"cba"
à A '.A = " bab"
: Le premier caractère" "
n'est pas en B, donc nous supprimons ce caractère de A et l'ajoutons à A '.A = "bab"
: Le premier caractère"b"
est en B et le préfixe le plus long de A trouvé en B est"b"
. Nous supprimons ce préfixe de A et ajoutons son inversion (qui est toujours"b"
) à A '.A = "ab"
: Le premier caractère"a"
est en B et le préfixe le plus long de A trouvé en B est"ab"
. Nous supprimons ce préfixe de A et ajoutons son inversion"ba"
à A '.A = ""
: A est vide, alors nous nous arrêtons.
Ainsi nous obtenons A' = "cba" + " " + "b" + "ba" = "cba bba"
. Pour B ', le processus est similaire:
B = "abdabc" -> "a" in A, remove prefix "ab"
B = "dabc" -> "d" not in A, remove "d"
B = "abc" -> "a" in A, remove prefix "abc"
Ainsi nous obtenons B' = "ba" + "d" + "cba" = "badcba"
.
Enfin, nous renvoyons les deux chaînes, c'est-à-dire
(A', B') = ("cba bba", "badcba")
Cas de test
"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"
Le code le plus court en octets gagne.
"cba bba", "badcba"
inclusion de guillemets et de virgules?