Python :: Aufgabe #331 :: Lösung #3

4 Lösungen Lösungen öffentlich
#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ß
#3
vote_ok
von nitnat (670 Punkte) - 09.04.2021 um 20:02 Uhr
Quellcode ausblenden Python-Code
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

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

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.