#include<bits/stdc++.h>
using namespace std;
#define MAX_CHARS 160
// Diese Funktion gibt true zurück, wenn str1 und str2 ismorph sind
bool areIsomorphic(string str1, string str2)
{
int m = str1.length(), n = str2.length();
// Länge beider Strings muss gleich sein für eins zu eins
// Entsprechung
if (m != n)
return false;
// Um besuchte Zeichen in str2 zu markieren boolmarked
[MAX_CHARS] = {false};
// Um die Zuordnung jedes Zeichens von str1 zu
// dem von str2 zu speichern. Initialisieren Sie alle Einträge der Karte als -1.
int-Map[MAX_CHARS];
memset(map, -1, sizeof(map));
// Verarbeite alle Zeichen nacheinander
für (int i = 0; i < n; i++)
{
// Wenn das aktuelle Zeichen von str1 zum ersten
Mal // darin gesehen wird.
if (map[str1[i]] == -1)
{
// Wenn das aktuelle Zeichen von str2 bereits
// gesehen wird, ist eine Eins-zu-Eins-Zuordnung nicht möglich
if (marked[str2[i]] == true)
return false;
// Aktuelles Zeichen von str2 als besucht
markieren markiert[str2[i]] = true;
// Speichere die Zuordnung der aktuellen Zeichen
map[str1[i]] = str2[i];
}
// Wenn dies nicht das erste Auftreten des aktuellen
// Zeichens in str1 ist, dann prüfen Sie, ob das vorherige
// Aussehen dem gleichen Zeichen von str2 zugeordnet ist
else if (map[str1[i]] != str2[i])
return false;
}
true zurückgeben;
}
// Treiberprogramm
int main()
{
cout << areIsomorphic("bbb", "yyy") << endl;
cout << areIsomorphic("aab", "yyz") << endl;
0 zurückgeben;
}