zB "ccddcc" in der Zeichenfolge "abaccddccefe"
Ich dachte an eine Lösung, aber sie läuft in O (n ^ 2) Zeit
Algo 1:
Schritte: Es ist eine Brute-Force-Methode
- Haben Sie 2 for-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 Teilstrings jeder möglichen Kombination aus dem Array abrufen
- Haben Sie eine Palindrom-Funktion, die prüft, ob eine Zeichenfolge Palindrom ist
- Rufen Sie diese Funktion für jeden Teilstring (i, j) auf, wenn es sich um ein Palindrom handelt, und speichern Sie sie in einer Zeichenfolgenvariablen
- Wenn Sie den nächsten Palindrom-Teilstring finden und dieser größer als der aktuelle ist, ersetzen Sie ihn durch den aktuellen.
- Schließlich hat Ihre Zeichenfolgenvariable die Antwort
Probleme: 1. Dieses Algo läuft in O (n ^ 2) Zeit.
Algo 2:
- Kehren Sie die Zeichenfolge um und speichern Sie sie in einem anderen Array
- Suchen Sie nun den größten passenden Teilstring zwischen beiden Arrays
- Aber auch dies läuft in O (n ^ 2) Zeit
Könnt ihr euch einen Algo vorstellen, der in einer besseren Zeit läuft? Wenn möglich O (n) Zeit
O(n^2)
darin, die Teilzeichenfolgen *O(n)
zu überprüfen, ob es sich um Palindrome handeltO(n^3)
.