C# :: Aufgabe #370 :: Lösung #1
1 Lösung

#370
Isomorphe Strings (Mustergleichheit)
Fortgeschrittener - C#
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ß
#1

von JKooP (18090 Punkte)
- 14.04.2021 um 16:59 Uhr
NET 5.x; C# 9.x; VS-2019
C#-Code

using System; using System.Collections.Generic; var lst = new List<(string a, string b)> { ("ABBA", "OTTO"), ("PAPER", "TITLE"), ("EGG", "ADD"), ("BADC", "BABA"), ("BBBAAABA", "AAABBBBA") }; lst.ForEach(x => Console.WriteLine($"{x} => {IsIsomorphic(x.a, x.b)}")); static bool IsIsomorphic(string s, string t) { if (s.Length != t.Length) return false; var cS = new char[256]; var cT = new char[256]; for (int i = 0; i < s.Length; i++) { if (cS[s[i]] != cT[t[i]]) return false; cS[s[i]] = cT[t[i]] = (char)i; } return true; }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1