Ich habe diesen Code, den ich in einem anderen Thema gefunden habe, aber er sortiert die Teilzeichenfolge nach zusammenhängenden Zeichen und nicht nach alphabetischer Reihenfolge. Wie korrigiere ich es für die alphabetische Reihenfolge? Es druckt lk
und ich möchte ccl
drucken. Danke
ps: Ich bin ein Anfänger in Python
%Vor%Versuchen Sie, dies zu ändern:
%Vor%dazu:
%Vor% Dies zeigt ccl
für Ihre Beispieleingabe an. Der Code ist einfacher, weil Sie versuchen, ein einfacheres Problem zu lösen: -)
Sie können Ihren Algorithmus verbessern, indem Sie feststellen, dass die Zeichenfolge in Läufe von geordneten Teilstrings maximaler Länge aufgeteilt werden kann. Jeder geordnete Teilstring muss in einem dieser Läufe enthalten sein
Damit können Sie nur einmal durch die Zeichenfolge O (n)
iterieren %Vor%In Python ist der Zeichenvergleich im Vergleich zu Java-Script, wo die ASCII-Werte verglichen werden müssen, einfach. Laut Python
a & gt; b gibt ein Boolean False und b & gt; a gibt ein boolesches True
Die Verwendung der längsten Unterkette in alphabetischer Reihenfolge kann mit dem folgenden Algorithmus gefunden werden:
%Vor%Auf rekursive Weise können Sie count von itertools
importierenOder definieren Sie eine Methode:
%Vor%Mit dieser Methode können Sie den Wert eines Endpunkts erhalten, wenn Sie in Ihrem anallitischen Prozess einen Teilstring erstellen.
Sieht nun nach der Anallize-Methode aus (basierend auf Problem mit spacegame und Mr. ) Tim Petters Vorschlag)
%Vor%Zum Schluss, für Test oder Ausführung:
%Vor% Das großartige Stück dieses Jobs begann mit: spacegame und wurde von Mr.
Die Antwort ist:
Längste Teilkette in alphabetischer Reihenfolge: ccl
Verwenden Sie die Listen- und Max-Funktion, um den Code drastisch zu reduzieren.
%Vor%Etwas andere Implementierung, Aufbau einer Liste aller Teilstrings in alphabetischer Reihenfolge und Rückgabe der längsten:
%Vor%Tags und Links python