Schreibe eine Funktion, die das längste Palindrom in einem gegebenen String zurückgibt
z.B. "ccddcc" in der Zeichenfolge "abaccddccefe"
Ich dachte an eine Lösung, aber es läuft in O (n ^ 2) Zeit
Algo 1:
Steps: Es ist eine Brute-Force-Methode
Habe 2 für Schleifenfür i = 1 bis i kleiner als array.length -1
für j = i + 1 bis j kleiner als array.length Auf diese Weise können Sie Teilzeichenfolgen aller möglichen Kombinationen aus dem Array @ abrufeHabe eine Palindrom-Funktion, die prüft, ob eine Zeichenkette palindrom istso rufe diese Funktion für jeden Teilstring (i, j) auf, wenn es sich um ein Palindrom handelt, speichere sie in einer StringvariablenWenn Sie die nächste palindrome Teilzeichenfolge finden und diese größer als die aktuelle ist, ersetzen Sie sie durch die aktuelle. Schließlich wird Ihre String-Variable die Antwort haben
Issues: 1. Dieser Algo läuft in O (n ^ 2) Zeit.
Algo 2:
Reverse den String und speichere ihn in einem anderen Array Jetzt finden Sie den größten passenden Teilstring zwischen den beiden ArraysAber dies läuft auch in O (n ^ 2) ZeitKann ihr euch einen Algo vorstellen, der in einer besseren Zeit läuft? Wenn möglich O (n) Zeit