【哈希】Leetcode 205. 同构字符串【简单】

同构字符串

  • 给定两个字符串 s 和 t ,判断它们是否是同构的。

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

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

示例 1:

输入:s = “egg”, t = “add”
输出:true

解题思路

  • 可以使用两个哈希表来解决这个问题。遍历字符串 s 和 t, 分别维护两个哈希表来记录字符之间的映射关系。
  • 如果遇到一个新的字符,则将其映射到另一个新的字符上,并将映射关系存储在哈希表中;
  • 如果遇到已存在的字符,则检查其映射关系是否与另一个字符串相符,如果不符则返回 false。
  • 如果遍历完成后未出现问题,则返回 true。

Java实现

public class IsomorphicStrings {public boolean isIsomorphic(String s, String t) {if (s.length() != t.length()) {return false;}Map<Character, Character> sMap = new HashMap<>();Map<Character, Character> tMap = new HashMap<>();for (int i = 0; i < s.length(); i++) {char sCh = s.charAt(i);char tCh = t.charAt(i);//s映射t要一一对应if (!sMap.containsKey(sCh)) {sMap.put(sCh, tCh);} else if (sMap.get(sCh) != tCh) {return false;}//t映射s也要一一对应if (!tMap.containsKey(tCh)) {tMap.put(tCh, sCh);} else if (tMap.get(tCh) != sCh) {return false;}}return true;}public static void main(String[] args) {IsomorphicStrings isomorphicStrings = new IsomorphicStrings();String s1 = "badc", t1 = "baba";System.out.println("Test Case 1:");System.out.println("s: \"egg\", t: \"add\"");System.out.println("Result: " + isomorphicStrings.isIsomorphic(s1, t1)); // Expected: trueString s2 = "foo", t2 = "bar";System.out.println("\nTest Case 2:");System.out.println("s: \"foo\", t: \"bar\"");System.out.println("Result: " + isomorphicStrings.isIsomorphic(s2, t2)); // Expected: falseString s3 = "paper", t3 = "title";System.out.println("\nTest Case 3:");System.out.println("s: \"paper\", t: \"title\"");System.out.println("Result: " + isomorphicStrings.isIsomorphic(s3, t3)); // Expected: true}
}

时间空间复杂度

  • 时间复杂度: 遍历字符串 s 和 t,时间复杂度为 O(n),其中 n 是字符串的长度。

  • 空间复杂度: 使用了两个哈希表来存储映射关系,空间复杂度为O(n),其中 n 是字符串的长度。

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

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

相关文章

如何解决 Scrapy 下载图片时的文件名错误问题

在使用 Scrapy 的 ImagesPipeline 下载图片时&#xff0c;有时会遇到因为文件名的问题导致下载失败的情况。本文将详细解释这种错误的原因&#xff0c;并提供一个简单易懂的解决方案&#xff0c;帮助大家避免类似的问题。 问题描述 在下载图片时&#xff0c;如果图片的名字是…

C语言到底怎么学?

C语言到底怎么学&#xff1f; 1、工欲善其事&#xff0c;必先利其器 这里介绍几个华清远见学习C语言必备的工具: VMware、ubuntu。 VMware是一家提供虚拟化软件和解决方案的公司&#xff0c;VMware的旗舰产品是VMware Workstation&#xff0c;这是一种虚拟机软件&#xff0c;…

echers配置项:数据过多时,折叠数据缩放查看

当数据过多时&#xff0c;如上图所示的时间点&#xff0c;会自动折叠&#xff0c;此时鼠标缩放还不起作用&#xff0c;我们配置如下代码 let option {dataZoom: [{startValue: 05:00}, // 这个值需要跟 第一条 时间数据对应上{type: inside}], }配置后&#xff0c;就可以进行…

echers配置项:折线图,折现的颜色修改

如上图所示&#xff1a;红框内的折现颜色修改&#xff0c;并隐藏默认的点 series: [{data: [1, 230, 224, 218, 135, 147, 760,1500,1200,2500,2000],type: line,lineStyle: {color: #00DBFE // 折现颜色},symbol:none, // 不显示点smooth: true, // 折现角度&#xff1a;圆滑…

hadoop生态圈集群搭建(持续更新240513)

Hadoop生态圈 Linux1.修改ip地址2.重启network服务3.安装插件4.关闭防火墙5.创建用户6.创建目录7.修改目录的所属主和所属组为lxy8.修改主机名:hadoop102 (注意名字后面不要加空格)9.修改hosts文件10.等插件都装完后再重启Linux11.把xshell的登录用户换成lxy &#xff08;注意&…

5W 3KVAC隔离 宽电压输入 AC/DC 电源模块——TP05AL系列

TP05AL系列产品是一款经济型开板式开关电源&#xff0c;输出功率为5W&#xff0c;具有可靠性高、小体积、性价比高等特点&#xff0c;广泛用于工控和电力仪器、仪表、智能家居等相关行业。

通过 Apple Vision Pro 释放创造力:深入研究空间计算

Apple 最新进军空间计算领域的 Apple Vision Pro,标志着重新定义我们与技术交互方式的重大飞跃。空间计算超越了传统界限,允许用户以无缝集成到物理世界的方式参与 2D 和 3D 内容。 我们可以关注两种类型的体验: 在空间中渲染 2D 内容。这涉及将现有设备窗口投影到空间领域…

通过C++和libcurl下载网易云音乐音频文件的5个简单步骤

概述 在网络编程中&#xff0c;使用C和libcurl库下载文件是一项常见的任务。网易云音乐作为中国领先的在线音乐服务平台之一&#xff0c;以其丰富的音乐资源、优质的音质和智能推荐系统而广受欢迎。由于其平台提供了大量的正版音乐资源&#xff0c;用户在下载音频文件时可能会…

开源发布:JAVA版低代码报文网关-通过简单配置快速对接银行渠道

大家好&#xff0c;我是隐墨星辰&#xff0c;自从《百图解码支付系统设计与实现》专栏中的文章《图解支付报文网关&#xff1a;一种低代码报文网关的设计思路与核心代码实现》发表以来&#xff0c;不少同学留言或私信问我如何实现&#xff0c;说是虽然看懂了思路&#xff0c;但…

pycharm 里面安装 codeium 插件的时候,不能够弹出登录界面

pycharm 里面安装 codeium 插件的时候&#xff0c;不能够弹出登录界面 pycharm 里面安装 codeium 插件的时候&#xff0c;不能够弹出登录界面--解决如下A pycharm 里面安装 codeium 插件的时候&#xff0c;不能够弹出登录界面–解决如下 #踩坑/pycharm/codeium插件无法登录 安…

微信联登报invalid code, rid: 66446806-0826d0b4-3a94ce3a ,错误码:40029解决方法

目录 一、问题描述二、问题原因三、解决方法 一、问题描述 微信登录报错&#xff1a; invalid code, rid: 66446806-0826d0b4-3a94ce3a &#xff0c;错误码&#xff1a;40029二、问题原因 后端设置的 appsecret 和 appid 与前端的 appid 不一致。 三、解决方法 检查是否已…

用Ai编写一个电机驱动程序

问&#xff1a;帮我写一个步进电机的控制程序&#xff0c;要有包括加减速&#xff0c;以及电机步中断处理函数。 答&#xff1a;编写一个步进电机的控制程序涉及到硬件层面的操作&#xff0c;通常需要依赖特定的硬件平台和相应的驱动程序。以下是一个简化的示例&#xff0c;它展…

制氧机负离子的作用与好处深度解析

随着现代生活节奏的加快&#xff0c;空气质量逐渐下降&#xff0c;人们对健康生活的追求也日益增强。在这样的背景下&#xff0c;制氧机负离子功能因其多重健康效益而备受关注。本文将深入探讨制氧机负离子的作用与功效&#xff0c;帮助大家更好地了解并应用这一健康科技。 我们…

单片机烧录程序时“DTR的低电平复位,RTS高电平进入bootloader”有关的串口Modem联络信号

烧录程序时常见DTR和RTS引脚 参考&#xff0c;参考视频 因为常常使用的都是串口下载程序&#xff0c;常用的芯片CH340系列&#xff0c;下图中标红的引脚是MODEM联络信号&#xff0c;其中常见的DTR和RTS就是常见的串口Modem网络输出信号&#xff0c;也就是通过烧录软件控制的接…

VUE v-for中修改data数据

有个需求&#xff0c;要求使用v-for生成序号&#xff0c;但是中间可能会中断&#xff0c;例如&#xff1a; 1 2 3 4 (此行无序号) 5 6 (此行无序号) (此行无序号) (此行无序号) 7 8 ...... 想着这还不简单&#xff0c;只要在data中定义一个变量&#xff0c;然后每次调用时就行…

CMMI3认证如何升级为CMMI5认证

众所周知&#xff0c;CMMI认证体系共分为五个等级&#xff0c;一级最低&#xff0c;五级最高。企业初次申报一般从三级做起&#xff0c;在这个等级水平上&#xff0c;企业在项目研发管理方面已经具备一定的规范程度&#xff0c;对企业的过程改进有着显著成效&#xff0c;在同行…

wps本地js宏基础语句

IF语句 //str.indexOf("")的值为-1时表示不包含 function 是否包含关键字(){var str "陈表达真是个大帅哥";if(str.indexOf("大") ! -1){alert("是的&#xff0c;他是非常大");} }//str.includes("")返回一个布尔值&#x…

深入解析Wireshark1:从捕获到分析,一网打尽数据包之旅

目录 1 认识 Wireshark 1.1 选择网卡界面 1.2 捕获数据包界面 1.3 常用按钮功能介绍 1.4 数据包列表信息 1.5 数据包详细信息 2 数据包案例分析 Frame: 物理层的数据帧概况 Ethernet II: 数据链路层以太网帧头部信息 Internet Protocol Version 4 (IPv4): 互联网层IP…

Git系列:git restore 高效恢复代码的技巧与实践

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Java网络编程:介绍Java提供的网络编程接口,如Socket,ServerSocket,URL等,并通过实例说明它们的用法。

一、Java网络编程简介 网络编程的重要性: 网络编程是计算机科学中不可或缺的一部分,它使得两个或两个以上的计算机能够互相通信、协作,达成完成某个任务的目标。网络编程扫描多数我们日常生活中的应用场景,比如聊天软件、网页浏览、电子邮件、社交网络,甚至远程办公等。许多…