判断是否为同构字符串

要想解答这个算法,得明白一个概念,什么是同构字符串,来看一下定义:

也就是说,s可以转化为t,对应的t也可以转化为s。

 

解决思路:

我们进行一次的遍历,然后定义了两个dict,来记录s->t,t->s的映射,然后在后面校验一下,这两个dict的value 是否是相同的,来上代码。

复制代码
class Solution:
    def isIsomorphic(self, s: str, t: str):

        dict_s = {}
        dict_t = {}

        for s_i, t_i in zip(s, t):
            if s_i not in dict_s:
                dict_s[s_i] = ord(s_i) - ord(t_i)
            if t_i not in dict_t:
                dict_t[t_i] = ord(s_i) - ord(t_i)
        
        # 如果value不相同 就返回False  在py37后 dict是有序的
        for s_i, t_i in zip(s, t):
            if dict_s[s_i] != dict_t[t_i]:
                return False

        return True
复制代码

 

 为什么定义了两个dict?用来避免不同的s对应相同的t,所以用两个dict来进行校验。

 

posted @   TW-NLP  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示