[Python]LeetCode 205. 同构字符串(解法一)

649 阅读1分钟
给定两个字符串 s 和 t,判断它们是否是同构的。

如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。

所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。

示例 1:

输入: s = "egg", t = "add"
输出: true
    
示例 2:

输入: s = "foo", t = "bar"
输出: false
示例 3:

输入: s = "paper", t = "title"
输出: true

说明:
你可以假设 s 和 t 具有相同的长度
  • 思路1
1. 构造一空个字典存储映射关系
2. 判断一个源字符串s中的每个子字符串在字典中是否存在
    不存在就放入字典建立映射,一开始在这里漏了个条件,就是不能多个字符同时映射到一个目标(题目也没讲啊,后来一想题目真的不要讲的,因为反之亦然啊)
    存在就判断其索引在t中对应的索引的值是否与字典中的值一致 #有点绕其实比较简单,可能是我语文没学好
  • 通过的代码如下
class Solution:
    def isIsomorphic(self, s: str, t: str) -> bool:
        result = {}
        for index_s,sub_s in enumerate(s):
            if sub_s in result:
                if t[index_s]==result[sub_s]  :
                    continue
                else:
                    return  False
            else:
                #要加个条件不能多个sub_s指向同一个value,第一次写漏了这个条件
                if t[index_s] not in result.values():
                    result[sub_s]=t[index_s]
                else:
                    return False
        else:
            return True
  • 通过的结果一般