题目

给定两个字符串 s 和 t ,判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
示例 1:
输入:s = “egg”, t = “add”
输出:true
示例 2:
输入:s = “foo”, t = “bar”
输出:false
示例 3:
输入:s = “paper”, t = “title”
输出:true
提示:
1 <= s.length <= 5 * 10^4
t.length == s.length
s 和 t 由任意有效的 ASCII 字符组成
来源:力扣(LeetCode)

解题思路

  通过题目可以知道同构字符串必须所含的字符种类数量相同,比如示例1中都含有两种字符,示例2中一个含有两种一个含有3中所以一定不是同构字符串。同构字符串中对应位置的字符再次出现时也应和第一次的对应一致,比如示例3,p对应t,再次遇到p那么相同位置的另一个字符串中必须也是t。基于此我们可以利用字典来建立相应的对应关系,用集合来初步筛查不符合条件的情况。

class Solution:def isIsomorphic(self, s: str, t: str) -> bool:S=set(s)if len(S)!=len(set(t)):  #初步筛查不符合条件的情况return Falsed={}for i,j in zip(s,t):  try:    #尝试访问相同位置的对应元素是否同第一次的对应相一致if d[i]!=j:return Falseexcept:  #如果还没有建立对应关系,则现在建立d[i]=jreturn len(d)==len(S)

LeetCode简单题之同构字符串相关推荐

  1. LeetCode简单题之判断字符串的两半是否相似

    题目 给你一个偶数长度的字符串 s .将其拆分成长度相同的两半,前一半为 a ,后一半为 b . 两个字符串 相似 的前提是它们都含有相同数目的元音('a','e','i','o','u','A',' ...

  2. LeetCode简单题之旋转字符串

    题目 给定两个字符串, A 和 B. A 的旋转操作就是将 A 最左边的字符移动到最右边. 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' .如果在若干次旋转操作之后,A 能 ...

  3. LeetCode简单题之检查字符串是否为数组前缀

    题目 给你一个字符串 s 和一个字符串数组 words ,请你判断 s 是否为 words 的 前缀字符串 . 字符串 s 要成为 words 的 前缀字符串 ,需要满足:s 可以由 words 中的 ...

  4. LeetCode简单题之反转字符串

    题目 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这一问题. 示例 1: ...

  5. LeetCode简单题之整理字符串

    题目 给你一个由大小写英文字母组成的字符串 s . 一个整理好的字符串中,两个相邻字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要满足如下条件: 若 s ...

  6. LeetCode简单题之比较含退格的字符串

    题目 给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true .# 代表退格字符. 注意:如果对空文本输入退格字符,文本继续为空. 示例 1: 输入:s = ...

  7. LeetCode简单题之较大分组的位置

    题目 在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组. 例如,在字符串 s = "abbxxxxzyy" 中,就含有 "a", &q ...

  8. LeetCode简单题之检查是否所有字符出现次数相同

    题目 给你一个字符串 s ,如果 s 是一个 好 字符串,请你返回 true ,否则请返回 false . 如果 s 中出现过的 所有 字符的出现次数 相同 ,那么我们称字符串 s 是 好 字符串. ...

  9. LeetCode简单题之检查两个字符串数组是否相等

    题目 给你两个字符串数组 word1 和 word2 .如果两个数组表示的字符串相同,返回 true :否则,返回 false . 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串. ...

最新文章

  1. MySQL中Order By与Limit不要一起用
  2. 读书狂想之《穷爸爸,富爸爸》财富观
  3. Leetcode题库 15.三数之和_1(双指针 C实现)
  4. PHP foreach 小结
  5. caffe各种依赖包配置
  6. 解构变换矩阵:如何使变换矩阵分解为位移(T),旋转(R),缩放(S)矩阵
  7. 前后台字符串进行交互
  8. World Cup 996B(排队模拟)
  9. Atom 和 Sublime Text 相比哪个好?
  10. PHP消息队列实现及应用
  11. 机器学习入门——图解支持向量机
  12. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_12-MongoDb入门-基础概念...
  13. 【洛谷p1164】小A点菜
  14. 傻瓜攻略(二)——MATLAB数据挖掘之Apriori算法实现
  15. 邮箱前台html,WEB独特的邮箱
  16. English语法_形容词/副词3级 - 原级
  17. 90个常用词根,30个前缀30个后缀
  18. 号称下一代互联网的 Web3.0 到底是个啥?
  19. 验证身份证号是否正确,计算身份证号最后一位
  20. 28推论坛邀请注册攻略

热门文章

  1. 2022-2028年中国塑料编织品的制造行业市场竞争态势及投资方向分析报告
  2. Go 知识点(09)— for select 作用于 channel
  3. hadoop 添加删除机器以及设置免密登录
  4. MySQL解压版安装
  5. Pytorch的LSTM的理解
  6. Arm Cortex-M23 MCU,Arm Cortex-M33 MCU与RISC-V MCU技术
  7. NNVM Compiler,AI框架的开放式编译器
  8. 降维-基于RDD的API
  9. 加速针对COVID-19的医疗器械开发
  10. Android Edittext digits 属性限制输入的内容