力扣:205. 同构字符串

news2024/12/25 15:00:37

前言:剑指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 False
            s2t[sc] = tc
            t2s[tc] = sc
        return True

执行结果如下图:

image-20230920215006471.png

学到的知识点:

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

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

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

相关文章

Linux快速入门,上手开发 02.VMware的安装部署

倘若穷途末路,那便势如破竹 —— 24.3.21 一、VMware的作用 在Windows或IOS系统下,给本地电脑安装VMware虚拟机,用来在虚拟机上安装Linux系统,避免重复资源的浪费,可以在虚拟机上搭建Linux系统进行学习 二、VMware的安…

分布式数据库TiDB介绍及基本原理

1.概述: 1.1 标准SQL、noSQL、newSQL的区别: SQL(Structured Query Language):数据库,指传统的关系型数据库。缺点是面对大量的数据时,他的性能会随着数据库的增大而急剧下降。主要代表:SQL Server、Orac…

Data.olllo:轻松统计分类总数!

介绍: Data.olllo是您数据处理的得力助手,拥有众多强大的功能,其中之一便是“分类总数”功能。这个功能能够帮助您快速准确地统计某一列中不同分类的总数,无论是分类为A、B、C,还是其他自定义分类,都能轻松…

进行信创符合性检测是什么意思?

验收文件中,要求“进行信创符合性检测”,这些检测包括什么内容,需要提供什么证明材料? 这个问题相对复杂一些。首先,我们需要了解什么是“信创符合性”。大家都清楚,信创行业发展,是关系到国家…

无需敲代码,10s一个网页

无需掌握前端三剑客的知识&#xff0c;10s种做出下图的效果。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&…

群晖NAS使用docker安装容器魔方结合内网穿透实现公网访问

文章目录 1. 拉取容器魔方镜像2. 运行容器魔方3. 本地访问容器魔方4. 群辉安装Cpolar5. 配置容器魔方远程地址6. 远程访问测试7. 固定公网地址 本文主要介绍如何在群辉7.2版本中使用Docker安装容器魔方&#xff0c;并结合Cpolar内网穿透工具实现远程访问本地网心云容器魔方界面…

Redis入门到实战-第八弹

Redis实战热身Sorted sets篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的&#xff08;采用BSD许可证&#xff09;&#xff0c;用作数据库、缓存、消息代…

React Native 应用打包上架

引言 在将React Native应用上架至App Store时&#xff0c;除了通常的上架流程外&#xff0c;还需考虑一些额外的优化策略。本文将介绍如何通过配置App Transport Security、Release Scheme和启动屏优化技巧来提升React Native应用的上架质量和用户体验。 配置 App Transport…

CV论文--2024.3.25

1、Zero-Shot Multi-Object Shape Completion 中文标题&#xff1a;零样本多对象形状完成 简介&#xff1a;我们提出了一种3D形状补全方法&#xff0c;可以从单个RGB-D图像中恢复复杂场景中多个物体的完整几何形状。尽管单个物体的3D形状补全已经取得了显著进展&#xff0c;但…

Oracle:ORA-01830错误-更改数据库时间格式

1,先把报错SQL语句拿出来执行&#xff0c;看看是不是报的这个错 ORA-01830: 日期格式图片在转换整个输入字符串之前结束 2&#xff0c;然后查看默认日期格式是不是“YYYY-MM-DD HH24:MI:SS”&#xff08;正确格式&#xff09;。&#xff1b; 执行&#xff1a; SELECT * FRO…

用three.js做一个3D汉诺塔游戏(上)

本文由孟智强同学原创&#xff0c;主要介绍了如何利用 three.js 开发 3D 应用&#xff0c;涵盖 3D 场景搭建、透视相机、几何体、材质、光源、3D 坐标计算、补间动画以及物体交互实现等知识点。 入门 three.js 也有一阵子了&#xff0c;我发现用它做 3D 挺有趣的&#xff0c;而…

unity 学习笔记 4.坐标系

下载源码 UnityPackage 目录 1.基础知识 1.1.世界坐标和局部坐标 1.2.屏幕坐标 2.坐标系转换 3.练习&#xff1a;判断鼠标单击的位置 1.基础知识 1.1.世界坐标和局部坐标 1.2.屏幕坐标 2.坐标系转换 3.练习&#xff1a;判断鼠标单击的位置 步骤&#xff1a; 将脚本挂载到小…

MP4短视频怎么提取gif?一招让你视频变gif

日常生活中看到各种各样有趣的gif表情包就会收藏到自己图片库里。但是我们想要自己制作这种有趣的gif动图时要怎么办呢&#xff1f;怎么通过MP4视频来制作gif动画呢&#xff1f;通过使用gif图片制作&#xff08;https://www.gif.cn/&#xff09;工具-GIF中文网&#xff0c;能够…

查看Linux系统重启的四种基本命令

目录 前言1. last2. uptime3. journalctl4. dmesg 前言 对于排查其原因推荐阅读&#xff1a;详细分析服务器自动重启原因&#xff08;涉及Linux、Window&#xff09; 在Linux中&#xff0c;有多种命令可以查看系统重启的信息 以下是其中一些常用的命令及其解释&#xff1a; …

Windows系统安装PyTorch框架支持AMD Radeon显卡/Intel显卡

前言 PyTorch框架作为一种主流的、对新手友好的深度学习框架&#xff0c;应用的范围越来越广泛&#xff0c;但是作为一种深度学习框架&#xff0c;使用显卡进行加速训练是一种常见的需求&#xff0c;而PyTorch框架官方支持对NVIDIA卡支持更加友好&#xff0c;这一点从官方的安…

【计算机组成】计算机组成与结构(四)

上一篇&#xff1a;【计算机组成】计算机组成与结构&#xff08;三&#xff09; &#xff08;7&#xff09;存储系统 计算机采用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾问题。 两级存储:cache-主存、主存-辅存(虚拟存储体系) 局部性原理 ◆ 局部性…

AI程序员的诞生,对传统程序员的影响和堆技术产生的影响

一、全球首位AI程序员诞生&#xff0c;将会对程序员的影响有多大&#xff1f; AI程序员并不会抢走传统程序员的饭碗&#xff0c;而是为他们提供更多的工具和技术支持。实际上&#xff0c;AI技术在软件开发领域的应用可以帮助程序员更高效地进行开发、测试和维护工作&#xff0…

【python】flask执行上下文context,请求上下文和应用上下文原理解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

挺后悔,我敷衍地回答了“程序员如何提升抽象思维“

分享是最有效的学习方式。 博客&#xff1a;https://blog.ktdaddy.com/ 大家好&#xff0c;我是老猫。 大概在月初的时候&#xff0c;我发了一篇文章【当程序员之后&#xff1f;(真心话)】,在这篇文章中&#xff0c;提及了抽象思维对一名程序员的重要性。可能说得也比较笼统&a…

ZYNQ学习之PetaLinux开发环境搭建

基本都是摘抄正点原子的文章&#xff1a;<领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf&#xff0c;因初次学习&#xff0c;仅作学习摘录之用&#xff0c;有不懂之处后续会继续更新~ FTP&#xff1a;File Transfer Protocol 一、Ubuntu 和 Windows 文件互传 1.1、开启 Ubu…