205. 同构字符串(简单)
方法:哈希映射
思路
- 判断两个字符串是不是同构字符串,只需要判断对应的字符是不是存在映射关系,我们可以使用 map 来保存字符间的映射关系。
- 由于 "不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上",因此,我们既需要判断 s -> t 的映射是否符合要求,又需要判断 t -> s 的映射是否符合要求。 这里我们设置了两个 map ,分别保存两种映射关系。
代码
cpp
class Solution {
public:
bool isIsomorphic(string s, string t) {
if(s.size() != t.size()) return false;
unordered_map<char, char> ascii_s, ascii_t;
for(int i=0; i<s.size(); ++i){
// 说明已经存在该字符
if(ascii_s.find(s[i]) != ascii_s.end()){
if(t[i] != ascii_s[s[i]]) return false;
}
// 不存在该字符
else{
ascii_s[s[i]] = t[i];
}
// 另外一个方向遍历
if(ascii_t.find(t[i]) != ascii_t.end()){
if(s[i] != ascii_t[t[i]]) return false;
}
else{
ascii_t[t[i]] = s[i];
}
}
return true;
}
};