Python :: Aufgabe #341 :: Lösung #2

2 Lösungen Lösungen öffentlich
#341

Längster Substring (Teilzeichenfolge)

Anfänger - Python von JKooP - 10.04.2021 um 18:51 Uhr
Gegeben ist ein beliebig langer String (Zeichenkette) bestehend aus Kleinbuchstaben.
Ziel soll es sein, den längsten Substring (Teilzeichenfolge) herauszufinden,
der aus einem Buchstaben gebildet wird und aus mindestens 2 Zeichen besteht.

Schreibe eine Methode/Funktion, die sowohl die Länge als auch den Substrings selbst auf dem Bildschirm ausgibt.

Beispiele:
s1 = abcde
Länge: 0
Substring: "" -> keine Lösung, da kein Substring mit der Länge > 1

s2 = abccdec
Länge: 2
Substring: "cc"

s3 = "bbdddccaaa"
Länge: 3
Substring: "aaa"

Aufgabe 1:
Sind mehrere Substrings gleich lang, soll ein beliebiger ausgewählt werden.

Aufgabe 2:
Sind mehrere Substrings gleich lang, soll der des ersten Vorkommens ausgegeben werden.
zu s3:
Substring: "ddd"

Viel Spaß
#2
vote_ok
von eisheiliger (3750 Punkte) - 11.04.2021 um 17:20 Uhr
Quellcode ausblenden Python-Code

"""
#341: Längster Substring (Teilzeichenfolge)
Ziel soll es sein, den längsten Substring (Teilzeichenfolge) herauszufinden, der aus einem Buchstaben gebildet wird und
aus mindestens 2 Zeichen besteht. Sind mehrere Substrings gleich lang, soll der des ersten Vorkommens ausgegeben werden.
"""


def prf_lsub(eingabe):
    ein_compr = ""
    zae = 0
    max_z = 0
    max_s = ""
    i = 0

    for x in eingabe:
        if x not in ein_compr:
            ein_compr += x

    for alle in ein_compr:
        while i * alle in eingabe:
            zae = i
            i += 1
        else:
            if zae > max_z:
                max_z = zae
                max_s = alle
                i = 0

    if max_z > 1:
        print(eingabe, max_z * max_s, max_z)
    else:
        print(eingabe, max_z)


def main():
    prf_lsub("abcde")
    prf_lsub("abccdec")
    prf_lsub("bbdddccaaa")


if __name__ == '__main__':
    main()


Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben