力扣:205. 同构字符串(Python3)
题目:
给定两个字符串
s
和t
,判断它们是否是同构的。如果
s
中的字符可以按某种映射关系替换得到t
,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
示例:
示例 1:
输入:s =
"egg"
, t ="add"
输出:true
示例 2:输入:s =
"foo"
, t ="bar"
输出:false
示例 3:输入:s =
"paper"
, t ="title"
输出:true
解法:
依次将字符串映射到数字。数字从1开始编号,第1个出现的字符标1,第2个出现的字符标2,以此类推,如果已出现过,就用之前的标号。
代码:
class Solution: def isIsomorphic(self, s: str, t: str) -> bool: def exchange(s): count = 1 d = dict() ret = '' for letter in s: if letter not in d: d[letter] = str(count) count += 1 ret += d[letter] return ret return exchange(s) == exchange(t)