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)
