205. 同构字符串(简单)
方法:哈希映射
思路
- 判断两个字符串是不是同构字符串,只需要判断对应的字符是不是存在映射关系,我们可以使用 map 来保存字符间的映射关系。
- 由于 “不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上”,因此,我们既需要判断 s -> t 的映射是否符合要求,又需要判断 t -> s 的映射是否符合要求。 这里我们设置了两个 map ,分别保存两种映射关系。
代码
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;}
};