class Solution {
public:
bool isIsomorphic(string s, string t) {
}
};
205. 同构字符串
给定两个字符串 s
和 t
,判断它们是否是同构的。
如果 s
中的字符可以按某种映射关系替换得到 t
,那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
示例 1:
输入:s ="egg",
t ="add"
输出:true
示例 2:
输入:s ="foo",
t ="bar"
输出:false
示例 3:
输入:s ="paper",
t ="title"
输出:true
提示:
1 <= s.length <= 5 * 104
t.length == s.length
s
和 t
由任意有效的 ASCII 字符组成相似题目
原站题解
python3 解法, 执行用时: 44 ms, 内存消耗: 15.2 MB, 提交时间: 2022-07-08 10:19:37
class Solution: def isIsomorphic(self, s: str, t: str) -> bool: s2t, t2s = defaultdict(str), defaultdict(str) n = len(s) for i in range(n): x, y = s[i], t[i] if s2t[x] != '' and s2t[x] != y or t2s[y] != '' and t2s[y] != x: return False s2t[x] = y t2s[y] = x return True
python3 解法, 执行用时: 68 ms, 内存消耗: 15.1 MB, 提交时间: 2022-07-08 10:11:57
class Solution: def isIsomorphic(self, s: str, t: str) -> bool: if len(s) != len(t): return False n = len(s) hash1 = dict() hash2 = dict() for i in range(n): hash1[s[i]] = i hash2[t[i]] = i for i in range(n): if hash1[s[i]] != hash2[t[i]]: return False return True
golang 解法, 执行用时: 4 ms, 内存消耗: 2.6 MB, 提交时间: 2020-11-23 17:21:34
func isIsomorphic(s string, t string) bool { if len(s) != len(t) { return false } hash1 := make(map[byte]int) hash2 := make(map[byte]int) for i := 0 ; i < len(s) ; i++{ hash1[s[i]] = i hash2[t[i]] = i } for i := 0 ; i < len(s) ; i++{ if hash2[t[i]] != hash1[s[i]]{ return false } } return true }