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