Ich muss die minimale Anzahl von Einfügungen finden, die benötigt werden, um eine Zeichenfolge in ein Palindrom umzuwandeln. Hinweis: Die Einfügungen können an jedem Ort, am Ende oder innerhalb erfolgen. Wenn es nur am Ende war, haben wir eine Frage here.Mindestanzahl von Zeichen, die in eine Zeichenfolge eingefügt werden, um sie in Palindrom zu konvertieren
So fand ich heraus, dass dies in O(N**2)
Zeit durch diesen einfachen Trick getan werden kann:
- Lassen Sie die Zeichenfolge s1. Dreh es um. Sei es s2. Angenommen, die Länge ist
l
. - Finden Sie nun die längste gemeinsame Subsequenz von s1 und s2. Lass seine Länge
x
sein. - Die Antwort ist
l-x
.
Zum Beispiel angenommen s1 = abcda
. Daher s2 = adcba
. Länge ist 5. Längste gemeinsame Teilfolge ist aba
der Länge 3. So ist die minimale Anzahl der Einfügungen 5-3 = 2
, die die tatsächliche Antwort ist, mit der resultierenden Zeichenfolge - a
dc
bcda
.
Allerdings kann ich die Logik dahinter nicht verstehen. Kann mir jemand erklären, warum es funktioniert?
Und, gibt es eine O(N)
Lösung dafür?
Werfen Sie einen Blick auf diese [link] (http://cs.stackexchange.com/questions/52416/proof-for-minimum-number-of-insertions-to-convert-a-string-to-a- Palindrome) – harindersingh