Python :: Aufgabe #331 :: Lösung #3
4 Lösungen
#331
Isomorphe Strings (Mustergleichheit)
Fortgeschrittener - Python
von JKooP
- 06.03.2021 um 17:43 Uhr
Als isomorph bezeichnet man zwei oder mehrere Strings (Texte),
die zwar inhaltlich unterschiedlich sind, aber dennoch das gleiche Muster aufweisen.
Achtung:
Gleiche Buchstaben bedeuten Musterwiederholung! ABAB ist nicht ABCD, aber CDCD.
Beispiele:
s1 = ABBA; s2 = OTTO => true
s1 = PAPER; s2 = TITLE => true
s1 = EGG; s2 = ADD => true
s1 = BADC; s2 = BABA => false
s1 = BBBAAABA; s2 = AAABBBBA => false
Erstelle eine Funktion/Methode, die zwei Strings (Texte) hinsichtlich Isomorphie vergleicht.
Viel Spaß
die zwar inhaltlich unterschiedlich sind, aber dennoch das gleiche Muster aufweisen.
Achtung:
Gleiche Buchstaben bedeuten Musterwiederholung! ABAB ist nicht ABCD, aber CDCD.
Beispiele:
s1 = ABBA; s2 = OTTO => true
s1 = PAPER; s2 = TITLE => true
s1 = EGG; s2 = ADD => true
s1 = BADC; s2 = BABA => false
s1 = BBBAAABA; s2 = AAABBBBA => false
Erstelle eine Funktion/Methode, die zwei Strings (Texte) hinsichtlich Isomorphie vergleicht.
Viel Spaß
#3
von nitnat (670 Punkte)
- 09.04.2021 um 20:02 Uhr
def analyze_pattern(input_string):
char_dict = {}
for i in range(len(input_string)):
char = input_string[i]
if char not in char_dict:
char_dict[char] = [i]
else:
char_dict[char].append(i)
return [char_dict[char] for char in char_dict]
def compare_pattern(str1, str2):
if len(str1) != len(str2):
return False
else:
return analyze_pattern(str1) == analyze_pattern(str2)
# Test
a, b = "PAPER", "title"
c, d = "badc", "BABA"
e, f = "dolle sache oder?", "7/{{#?f@.,#?/7#§$"
print(compare_pattern(a, b))
print(compare_pattern(c, d))
print(compare_pattern(e, f))Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
