同构字符串
问题描述:给定两个字符串 s 和 t ,判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
解法:使用字典
字典的实质是:
d = {key1 : value1, key2 : value2, key3 : value3 }
主题思路是:对应两个字典里对应的关键值,如果不存在关键值就加入字典,如果存在键且键所对应的关键值与对比值不符,则不是同符字符串,
直接返回False,最后遍历完都对应返回True即可。
###代码如下:
class Solution(object):
def isIsomorphic(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
if len(s) != len(t):
return False
dice1 = {}
dice2 = {}
for i in range(len(s)):
if s[i] in dice1 and dice1[s[i]] != t[i]:
return False
if t[i] in dice2 and dice2[t[i]] != s[i]:
return False
if s[i] not in dice1:
dice1[s[i]] = t[i]
if t[i] not in dice2:
dice2[t[i]] = s[i]
return True