Python :: Aufgabe #341
2 Lösungen

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ß
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ß
Lösungen:

""" #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()

# -*- coding: utf-8 -*- def längster_substring(s): m = s[0] längster = [] for i in range(1,len(s)): if s[i] != m[0]: m = s[i] else: m += s[i] längster.append(m) try: sub = max(längster) print('Länge:', len(sub)) print('Substring: "{}"\n'.format(sub)) except: print('Länge: 0') print('Substring: "" -> keine Lösung, da kein Substring mit der Länge > 1\n') beispiele = ['abcde', 'abccdec', 'bbdddccaaa'] for s in beispiele: print('s{} = {}'.format(beispiele.index(s)+1, s)) längster_substring(s)