// 寻找对称的单词,一个简单的思路是遍历第一个字符串,将每一个字母出现的位置组合成一个int数值,如egg中g为12,并存为哈希表,最后比较两个哈希表中每个对应字母的int数值是否相同。
class Solution {
public:
bool isIsomorphic(string s, string t) {
if (s.length() != t.length())
return false;
else {
unordered_map<char, int> t_char;
unordered_map<char, int> s_char;
for (int i = 0; i < s.length(); i++)
{
if (s_char.find(s[i]) == s_char.end())
s_char.insert(make_pair(s[i], i + 1));
else
s_char[s[i]] = s_char[s[i]] * 10 + i + 1;
}
for (int i = 0; i < t.length(); i++)
{
if (t_char.find(t[i]) == t_char.end())
t_char.insert(make_pair(t[i], i + 1));
else
t_char[t[i]] = t_char[t[i]] * 10 + i + 1;
}
for (int i=0;i<s.length();i++)
{
if (t_char[t[i]] == s_char[s[i]])
continue;
else
return false;
}
return true;
}
}
};