用hash存映射关系,然后按照定义去判断
代码:
class Solution {
public:
bool isIsomorphic(string s, string t) {
int n = s.size();
int m = t.size();
if(n != m) return false;
//每个字符串只管自己的映射
unordered_map<char,char> hashs,hasht;
/*
"bbbaaaba"
"aaabbbba"
b 虽然可以映射到本身 但是前面的时候 b已经映射到 a了 所以这种情况是false
*/
for(int i = 0; i < n;i++){
char a = s[i],b = t[i];
if(hashs.count(a) && hashs[a] != b) return false;
hashs[a] = b;
if(hasht.count(b) && hasht[b] != a) return false;
hasht[b] = a;
}
return true;
}
};
评论区