Given two strings s and t, determine if they are isomorphic.
Two strings are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.
For example,
Given "egg", "add", return true.
Given "foo", "bar", return false.
Two strings are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.
For example,
Given "egg", "add", return true.
Given "foo", "bar", return false.
Given "paper", "title", return true.
bool isIsomorphic(string s, string t)
{
vector<char> mapStoT(127, 0);
vector<char> mapTtoS(127, 0);
int len = s.length();
for (int i = 0; i < len; ++i)
{
char s_char = s[i], t_char = t[i];
if (mapStoT[s_char] == 0 && mapTtoS[t_char] == 0)
{
mapStoT[s_char] = t_char;
mapTtoS[t_char] = s_char;
}
else if (mapTtoS[t_char] != s_char || mapStoT[s_char] != t_char)
{
return false;
}
}
return true;
}