📅  最后修改于: 2023-12-03 15:10:19.561000             🧑  作者: Mango
给定两个字符串s和t,判断它们是否是同构的。 如果s中的字符可以被替换得到t,则这两个字符串是同构的。 所有出现的字符必须用另一个字符替换, 同时保留字符的顺序。 两个字符不能映射到同一个字符,但一个字符可以映射到自己。
示例1:
输入: s = "egg", t = "add"
输出: true
示例2:
输入: s = "foo", t = "bar"
输出: false
示例3:
输入: s = "paper", t = "title"
输出: true
题目要求我们判断两个字符串是否同构,因此我们需要先对两个字符串进行比较。
步骤如下:
def isIsomorphic(s: str, t: str) -> bool:
if len(s) != len(t):
return False
s_dict, t_dict = {}, {}
for i in range(len(s)):
if s[i] not in s_dict:
s_dict[s[i]] = t[i]
elif s_dict[s[i]] != t[i]:
return False
if t[i] not in t_dict:
t_dict[t[i]] = s[i]
elif t_dict[t[i]] != s[i]:
return False
return True
# 示例测试
print(isIsomorphic("egg", "add")) # True
print(isIsomorphic("foo", "bar")) # False
print(isIsomorphic("paper", "title")) # True
由于遍历两个字符串仅需一次,因此时间复杂度为O(n),其中n为字符串长度。 哈希表中最多只需要存储两个字符串长度的字符,因此空间复杂度为O(n)。