判断是否为同构字符串
要想解答这个算法,得明白一个概念,什么是同构字符串,来看一下定义:
也就是说,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来进行校验。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具