力扣:205. 同构字符串

前言:剑指offer刷题系列

问题:

给定两个字符串 st ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

示例:

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

思路:

同构字符串的条件是s中的字符和t中的字符是一一对应的关系。即:

相同字符只能映射到同一个字符上:s中的字符到t中的字符的映射是唯一的;
不同字符不能映射到同一个字符上:t中的字符到s中的字符的映射是唯一的;

在我的代码方法中,首先创建了两个空字典s2tt2s,用于存储字符之间的映射关系。

接下来,通过使用zip函数将字符串st中的字符一一对应起来,并使用循环遍历这些对应的字符对。

在每次循环中,通过检查当前字符对(sc, tc)是否满足以下条件来判断它们是否是同构的:

  • 如果sc已经在字典s2t中存在,并且其对应的值s2t[sc]不等于字符tc,则说明st不是同构的,返回False
  • 如果tc已经在字典t2s中存在,并且其对应的值t2s[tc]不等于字符sc,则说明st不是同构的,返回False

如果以上两个条件都不满足,说明当前的字符对是有效的映射关系,将其添加到相应的字典中:

  • s2t[sc] = tc表示将字符sc映射为字符tc
  • t2s[tc] = sc表示将字符tc映射为字符sc

最后,如果循环结束后没有提前返回False,则说明所有的字符对都满足同构的条件,返回True

基于上述思考,代码如下:

class Solution:def isIsomorphic(self, s: str, t: str) -> bool:s2t = {}t2s = {}for sc, tc in zip(s, t):if (sc in s2t and s2t[sc] != tc) or (tc in t2s and t2s[tc] != sc):return Falses2t[sc] = tct2s[tc] = screturn True

执行结果如下图:

image-20230920215006471.png

学到的知识点:

什么是同构?同构是数学中的一个概念,它指的是两个结构在某种意义下具有相同的属性和操作。在数学中研究同构的主要目的是为了把数学理论应用于不同的领域。如果两个结构是同构的,那么其上的对象会有相似的属性和操作,对某个结构成立的命题在另一个结构上也成立。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/769054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Lazy ORM 框架学习】

Gitee 点赞关注不迷路 项目地址 快速入门 模块所属层级描述快照版本正式版本wu-database-lazy-lambdalambda针对不同数据源wu-database-lazy-orm-coreorm 核心orm核心处理wu-database-lazy-sqlsql核心处理成处理sql解析、sql执行、sql映射wu-elasticsearch-starterESESwu-hb…

时间的守护者:无硫手指套的神奇传说

在钟表制造的世界里,有一个神奇的工具被誉为“精工制表良器”——那就是无硫手指套。这并不是一个普通的故事,而是一段讲述质量、技术和关怀的传奇。 很久以前,在一个钟表制造工坊里,技师们为了追求完美,不断地探索着提…

服务器被挖矿了怎么办,实战清退

当我们发现服务器资源大量被占用的时候,疑似中招了怎么办 第一时间重启服务是不行的,这些挖矿木马一定是会伴随着你的重启而自动重启,一定时间内重新霸占你的服务器资源 第一步检查高占用进程 top -c ps -ef 要注意这里%CPU,如果…

Linux操作系统及进程(三)进程优先级及特性

目录 一、优先级概念 二、查看系统进程 三、进程切换 一、优先级概念 1.cpu资源分配的先后顺序,就是指进程的优先权(priority)。 2.优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。…

pinia的异步以及getter

getter定义 action异步 使用

PyQt:实现菜单栏的点击拖动效果

一、整体步骤 1.设计UI文件 2.调用显示 3.效果展示 二、设计UI文件 1.添加 Scroll Area控件,作为菜单栏的布置区域 2.设置 Scroll Area控件的属性 3.Scroll Area控件内放置 按钮控件 组成菜单栏 此处,放置了需要了6个按钮,并设置按钮的固…

跨境电商测评自养号需要解决哪些问题?

现在做测评工作室这块的,真正有技术的每天单都做不过来,同样也滋生出很多找别人买个设备和账号就以为自己懂了,直接开始教学来割韭菜,很多人没接触过这行业,不知道里面的水很深,花了钱,却没有掌…

xilinx linux AXI GPIO 驱动学习

vivado工程 vivado 配置一个 AXI GPIO&#xff0c; 全输出&#xff0c;宽度为1 设备树解读 生成的对应pl.dtsi设备树文件如下 axi_gpio: gpio40020000 {#gpio-cells <2>;clock-names "s_axi_aclk";clocks <&clkc 15>;compatible "xlnx,…

巧用cpl文件维权和免杀(上)

cpl文件 CPL文件&#xff0c;是Windows控制面板扩展项&#xff0c;CPL全拼为Control Panel Item在system32目录下有一系列的cpl文件,分别对应着各种控制面板的子选项 列入我们winR输入main.cpl 将会打开控制面板中的鼠标属性 cpl文件本质是属于PE文件 但cpl并不像exe,更像是dl…

SQL107 将两个 SELECT 语句结合起来(二)(不用union,在where里用or)

select prod_id,quantity from OrderItems where quantity 100 or prod_id like BNBG% order by prod_id;在where子句里使用or

金蝶云星空和管易云单据接口对接

金蝶云星空和管易云单据接口对接 对接系统&#xff1a;管易云 管易云是金蝶旗下专注提供电商企业管理软件服务的子品牌&#xff0c;先后开发了C-ERP、EC-OMS、EC-WMS、E店管家、BBC、B2B、B2C商城网站建设等产品和服务&#xff0c;涵盖电商业务全流程。 写入目标:金蝶云星空 金…

CentOS7安装mysql-5.7.44单机和主从复制

官网下载地址&#xff1a; https://downloads.mysql.com/archives/community/ 1、单机安装 安装依赖 yum -y install libaio 解压安装 tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gzmv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysqlcd /usr/local/mysql…

文件上传一-WEB攻防-PHP应用文件上传函数缺陷条件竞争二次渲染黑白名单JS绕过9

演示案例&#xff1a; PHP-原生态-文件上传-前后端验证PHP-原生态-文件上传-类型文件头验证PHP-原生态-文件上传-后缀黑白名单验证PHP-原生态-文件上传-解析配置&二次渲染PHP-原生态-文件上传-逻辑缺陷&函数缺陷 #学习前必读&#xff1a; 1、课前一定要明白&#xff1a…

蓝桥杯基础练习详细解析一(代码实现、解题思路、Python)

试题 基础练习 数列排序 资源限制 内存限制&#xff1a;512.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 给定一个长度为n的数列&#xff0c;将这个数列按从小到大的顺序排列。1<n<200 输入格式 第…

MySQL事务(超详细!!!)

目录 一、MySQL事务的概念 二、事务的ACID特点 1、原子性&#xff08;Atomicity&#xff09; 2、持久性 3、隔离性&#xff08;Isolation&#xff09; 3.1 事务的并发问题 ①、脏读(读取未提交数据) ②读已提交、不可重复读(前后多次读取&#xff0c;数据内容不一致) …

【Redis主从架构。主从工作原理psync、bgsave、部分数据复制、主从复制风暴解决方案】【Redis哨兵高可用架构。sentinel】

Redis主从架构 Redis主从工作原理数据部分复制 Redis哨兵高可用架构client连接哨兵规则主节点挂了&#xff0c;集群从新选择主节点&#xff0c;并且同步给sentinel 转自图灵课堂 redis主从架构搭建&#xff0c;配置从节点步骤&#xff1a; 1、复制一份redis.conf文件2、将相关…

美易官方:除了散户,对冲基金也在重返加密市场

高盛&#xff1a;除了散户&#xff0c;对冲基金也在重返加密市场 随着加密货币市场的逐渐成熟和技术的不断进步&#xff0c;越来越多的机构投资者开始重新审视加密货币市场。除了散户投资者外&#xff0c;对冲基金也在重返加密市场&#xff0c;成为市场的重要参与者之一。高盛作…

苹果手机强制重启方法大揭秘!不同机型多种方法一网打尽

随着苹果手机的普及&#xff0c;越来越多的人选择使用这款优秀的智能手机。然而&#xff0c;就像任何其他设备一样&#xff0c;苹果手机也可能会出现各种问题&#xff0c;例如系统崩溃、应用程序冻结或其他错误。在这种情况下&#xff0c;强制重启手机是解决问题的一个有效方法…

Pygame基础3-动画

3.动画 原理 动画是连续播放的图片。 使用精灵显示动画只需要在update()方法中改变精灵的图片。 需要注意的是播放速度&#xff0c;可以 通过pygame.time.get_ticks()来控制时间&#xff0c;但是这样比较复杂。最直接的方式是根据帧数来控制播放。每过n帧就切换一次图片。 …

linux系统--------------mysql数据库管理

目录 一、SQL语句 1.1SQL语言分类 1.2查看数据库信息 1.3登录到你想登录的库 1.4查看数据库中的表信息 1.5显示数据表的结构&#xff08;字段&#xff09; 1.5.1数据表的结构 1.5.2常用的数据类型: 二、关系型数据库的四种语言 2.1DDL&#xff1a;数据定义语言&am…