leetcode:同构字符串(详解)

news/2024/12/4 20:05:18/

前言:内容包括:题目,代码实现,大致思路,代码解读

题目:

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

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

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

示例 1:

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

输入:s = "foo", t = "bar"
输出:false
示例 3:

输入:s = "paper", t = "title"
输出:true

代码实现:

bool isIsomorphic(char * s, char * t)
{int len = strlen(s);char arr1[200] = {0};char arr2[200] = {0};int i = 0;for(i=0;i<len;i++){if(arr1[s[i]]==0 && arr2[t[i]]==0){arr1[s[i]] = t[i];arr2[t[i]] = 1;}else if(arr1[s[i]]!=t[i]){return false;}}return true;
}

大致思路:

 e--->a

g--->d

g--->d

e只对应a,g只对应d

都是一一对应

 f--->b

o--->a

o--->r

f只对应b 

o对应了a,对应了r   由于不是一一对应,所以不是同构

1 同时遍历s和t两个字符串,以遍历到的s的字符作为下标(字符的本质是ASCII码值),若它唯一标识的空间内没有置入t的字符,则将同位置的t字符串字符置入这个空间,同时标记这个t字符串中的字符,表示它已经有对应关系

2 若是s的字符为下标唯一标识的空间内有字符了,则判断这个空间的字符是否和现在遍历到的t的字符相同,若是不同,则对应不唯一,不是同构字符串

代码解读:

part 1

    char arr1[200] = {0};char arr2[200] = {0};

arr1:存储s的字符的对应对象

arr2:标识t的字符是否有对应关系

part 2

    for(i=0;i<len;i++){if(arr1[s[i]]==0 && arr2[t[i]]==0)//s的字符没有对应对象,并且同位置上的t的字符也没有对应关系{arr1[s[i]] = t[i];//s的字符的对应对象匹配t的字符arr2[t[i]] = 1;//该t的字符已有对应关系}else if(arr1[s[i]]!=t[i])//s的字符已有对应对象 且这个对象不是当前的t的字符{return false;}}return true;

http://www.ppmy.cn/news/41851.html

相关文章

qt动态加载qss 更好的推荐方式

1、编写QRC资源文件[window和linux通用] 2、过rcc程序生成rcc资源文件 生成2进制数据&#xff1a; 通过控制台窗口执行以下命令&#xff0c;会把qrc中的资源文件写成二进制数据保存 rcc.exe -binary .\resuorce.qrc -o .\resuorce.rcc 生成16进制数据&#xff1a; 通过控制台窗…

技术面面试高频考点总结-JAVA篇

文章目录技术面面试高频考点总结-JAVA篇一、Java基础二、JVM三、并发四、框架五、小结题外话技术面面试高频考点总结-JAVA篇 大家好呀&#xff0c;这里是小黛&#xff01; 今天呀&#xff0c;来介绍大家最喜欢的Java篇&#xff0c;Java的八股文&#xff0c;可是非常非常非常庞…

spring-boot - 整合Reids集群

【spring-boot - 整合Reids集群】1.引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--SpringBoot与Redis整合依赖--><dependency><gro…

00后整顿职场,我直呼太卷了....

内卷的来源 内卷最早的“出处”是几张名校学霸的图片。 大学生们刷爆朋友圈的几张“内卷”图片是这样的&#xff1a;有的人骑在自行车上看书&#xff0c;有的人宿舍床上铺满了一摞摞的书&#xff0c;有的人甚至边骑车边端着电脑写论文。这些图片最早在清华北大的学霸之间流传。…

BFC理解和应用

现象&#xff1a;有些同事在工作的过程中遇到高度塌陷、margin重叠、标准元素被浮动元素覆盖的情况&#xff0c;有时候通过百度的方法是解决了&#xff0c;但是没有理解其原因是什么。这就引出了我们的主角BFC。 BFC&#xff1a; Block format content 即块级格式化上下文 &am…

Nginx配置与应用

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器&#xff0c;而且支持热部署&#xff0c;几乎可以做到 7 * 24 小时不间断运行&#xff0c;即使运行几个月也不需要重新启动&#xff0c;还能在不间断服务的情况下对软件版本进行热更新。性能是 Nginx 最重要的考量&#xf…

Kubernetes 笔记(13)— 有状态的应用 StatefulSet、实现 StatefulSet 的数据持久化

1. 什么是有状态的应用 有了持久化存储 PersistentVolume&#xff0c;应用就可以把一些运行时的关键数据落盘&#xff0c;相当于有了一份“保险”&#xff0c;如果 Pod 发生意外崩溃&#xff0c;也只不过像是按下了暂停键&#xff0c;等重启后挂载 Volume&#xff0c;再加载原…

DJ编曲用什么软件,DJ编曲教需要哪些步骤

随着现在人们的生活水平不断提高&#xff0c;我们的精神生活也越来越丰富&#xff0c;对于现在的年轻人来说&#xff0c;DJ舞曲是一个较受欢迎的领域&#xff0c;有许多年轻人对DJ这个职业感兴趣&#xff0c;想要深入了解DJ编曲这份工作&#xff0c;那么今天我们就来说一说DJ编…