Rekursive Palindromzerlegung aus Teilzeichenfolgen

Rust Hard functions

Aufgabe «Rekursive Palindromzerlegung aus Teilzeichenfolgen»

Gegeben ist eine Zeichenkette S, bestehend aus Kleinbuchstaben des lateinischen Alphabets. Es ist erforderlich, die ursprüngliche Zeichenkette rekursiv (unter Verwendung einer Funktion) in eine minimale Anzahl von Palindrom-Teilzeichenfolgen (jede Teilzeichenfolge muss ein Palindrom sein) zu zerlegen und diese durch Leerzeichen getrennt auszugeben. Wenn die Zerlegung unmöglich ist (z. B. wenn die Zeichenkette leer ist), geben Sie "NO" aus. Einschränkungen: Länge von S von 1 bis 1000 Zeichen. Es wird garantiert, dass eine Antwort existiert.

Eingabeformat

Eine Zeichenkette S (1 ≤ |S| ≤ 1000).

Ausgabeformat

Eine Zeichenkette, die die Palindrom-Teilzeichenfolgen enthält, getrennt durch ein Leerzeichen. Wenn die Eingabezeichenkette leer ist, geben Sie "NO" aus.

Beispiele

Beispiel 1

EINGABE
racecar
AUSGABE
racecar

Beispiel 2

EINGABE
aab
AUSGABE
aa b
main.rs