欢迎大家参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!

# 205. 同构字符串 [力扣题目链接](https://leetcode-cn.com/problems/isomorphic-strings/) 给定两个字符串 s 和 t,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。 示例 1: * 输入:s = "egg", t = "add" * 输出:true 示例 2: * 输入:s = "foo", t = "bar" * 输出:false 示例 3: * 输入:s = "paper", t = "title" * 输出:true 提示:可以假设 s 和 t 长度相同。 # 思路 字符串没有说都是小写字母之类的,所以用数组不合适了,用map来做映射。 使用两个map 保存 s[i] 到 t[j] 和 t[j] 到 s[i] 的映射关系,如果发现对应不上,立刻返回 false C++代码 如下: ```CPP class Solution { public: bool isIsomorphic(string s, string t) { unordered_map map1; unordered_map map2; for (int i = 0, j = 0; i < s.size(); i++, j++) { if (map1.find(s[i]) == map1.end()) { // map1保存s[i] 到 t[j]的映射 map1[s[i]] = t[j]; } if (map2.find(t[j]) == map2.end()) { // map2保存t[j] 到 s[i]的映射 map2[t[j]] = s[i]; } // 发现映射 对应不上,立刻返回false if (map1[s[i]] != t[j] || map2[t[j]] != s[i]) { return false; } } return true; } }; ``` # 其他语言版本 ## Java ```java class Solution { public boolean isIsomorphic(String s, String t) { Map map1 = new HashMap<>(); Map map2 = new HashMap<>(); for (int i = 0, j = 0; i < s.length(); i++, j++) { if (!map1.containsKey(s.charAt(i))) { map1.put(s.charAt(i), t.charAt(j)); // map1保存 s[i] 到 t[j]的映射 } if (!map2.containsKey(t.charAt(j))) { map2.put(t.charAt(j), s.charAt(i)); // map2保存 t[j] 到 s[i]的映射 } // 无法映射,返回 false if (map1.get(s.charAt(i)) != t.charAt(j) || map2.get(t.charAt(j)) != s.charAt(i)) { return false; } } return true; } } ``` ## Python ```python ``` ## Go ```go func isIsomorphic(s string, t string) bool { map1 := make(map[byte]byte) map2 := make(map[byte]byte) for i := range s { if _, ok := map1[s[i]]; !ok { map1[s[i]] = t[i] // map1保存 s[i] 到 t[j]的映射 } if _, ok := map2[t[i]]; !ok { map2[t[i]] = s[i] // map2保存 t[i] 到 s[j]的映射 } // 无法映射,返回 false if (map1[s[i]] != t[i]) || (map2[t[i]] != s[i]) { return false } } return true } ``` ## JavaScript ```js ``` ----------------------- * 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw) * B站视频:[代码随想录](https://space.bilibili.com/525438321) * 知识星球:[代码随想录](https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ)