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 Schleifen
fü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) Zeit

Kann ihr euch einen Algo vorstellen, der in einer besseren Zeit läuft? Wenn möglich O (n) Zeit

Antworten auf die Frage(21)

Ihre Antwort auf die Frage