给定两个字符串 s
和 t
,判断它们是否是同构的。
如果 s
中的字符可以按某种映射关系替换得到 t
,那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
示例 1:
"egg",
"add"
示例 2:
"foo",
"bar"
示例 3:
"paper",
"title"
建立两个映射表(a、b),使得它们相互映射。当a映射表中元素映射对应b映射表时,两者映射冲突,那么它们就是非同构。
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
a = {}
b = {}
for i in range(len(s)):
if (s[i] in a and a[s[i]] != t[i]) or (t[i] in b and b[t[i]] != s[i]):
return False
a[s[i]] = t[i]
b[t[i]] = s[i]
return True