概述:给定两个字符串 s 和 t ,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
输入:s = "paper", t = "title"
方法一:字典
思路:首先分别建立字典存储 s 和 t,然后对字典交叉判断即可。
def isIsomorphic(self, s: str, t: str) -> bool:
if s_dict.get(i, j) != j or t_dict.get(j, i) != i:
方法二:集合
思路:用 set 集合不重复特点进行快速判断,同时满足 s 和 t 集合长度相等以及 s 和 zip(s,t) 集合长度相等即可。
def isIsomorphic(self, s: str, t: str) -> bool:
return len(set(s)) == len(set(t)) and len(set(s)) == len(set(zip(s, t)))
总结
曹贼,恶贼,奸贼,逆贼,这都是两两同构的; 还有我部悍将刘三刀,零陵上将邢道荣,爱兵如子张翼德,胸怀广阔周公瑾!