题目
解析
哈希
笨拙的方式
- 通过两个hash记录状态。
- charmap记录字符替换方案
- charintmap确保两个字符不能映射到同一个字符上
class Solution {
public:
bool isIsomorphic(string s, string t) {
int lens=s.size(),lent=t.size();
if(lens!=lent)return false;
unordered_map<char,char> charmap;
unordered_map<char,int> charintmap;
for(int i=0;i<lens;++i){
if(charmap.count(s[i])==0){
if(charintmap.count(t[i])){
return false;
}
charmap[s[i]]=t[i];
charintmap[t[i]]=1;
}else if(charmap[s[i]]!=t[i]){
return false;
}
}
return true;
}
};
官方解答-哈希
同样是利用两个hash数组记录状态。但有所区别。
class Solution {
public:
bool isIsomorphic(string s, string t) {
unordered_map<char, char> s2t;
unordered_map<char, char> t2s;
int len = s.length();
for (int i = 0; i < len; ++i) {
char x = s[i], y = t[i];
if ((s2t.count(x) && s2t[x] != y) || (t2s.count(y) && t2s[y] != x)) {
return false;
}
s2t[x] = y;
t2s[y] = x;
}
return true;
}
};
/*
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/isomorphic-strings/solution/tong-gou-zi-fu-chuan-by-leetcode-solutio-s6fd/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/