【Leetcode -205.同构字符串 -228.汇总区间】

news/2024/11/30 20:40:16/

Leetcode

  • Leetcode - 205.同构字符串
  • Leetcode - 228.汇总区间

Leetcode - 205.同构字符串

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

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

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

示例 1:

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

输入:s = “foo”, t = “bar”
输出:false

我们的思路是,初始化两个数组为0,长度是有效字符的最大值,因为数组中存的是字符串中的字符;用sc和tc记录当前字符是否第一次出现,第一次出现就++sc和++tc,按照出现的顺序给它赋值;

比如abbc和babc,a和b第一次出现,那么hash1[a] 和 hash2[b]都为1;
第二个字符b和a,也是第一次出现,那么hash1[b] 和 hash2[a]都为2;
到第三个字符b和b,都是第二次出现,所以sc和tc不用++,但是hash1[b] 和 hash2[b]不相等,所以返回false;

		bool isIsomorphic(char* s, char* t){//初始化两个数组都为0,长度为有效字符的最大值int hash1[127] = { 0 };int hash2[127] = { 0 };//sc和tc记录当前字符是否第一次出现,第一次出现就++sc和++tc,按照出现的顺序给它赋值//比如abbc和babc,a和b第一次出现,那么hash1[a] 和 hash2[b]都为1;//第二个字符b和a,也是第一次出现,那么hash1[b] 和 hash2[a]都为2;//到第三个字符b和b,都是第二次出现,所以sc和tc不用++,但是hash1[b] 和 hash2[b]不相等,所以返回falseint sc = 0, tc = 0;for (int i = 0; i < strlen(s); i++){//判断是否第一次出现if (hash1[s[i]] == 0){hash1[s[i]] = ++sc;}//判断是否第一次出现if (hash2[t[i]] == 0){hash2[t[i]] = ++tc;}if (hash1[s[i]] != hash2[t[i]]){return false;}}return true;}

Leetcode - 228.汇总区间

题目:给定一个 无重复元素 的 有序 整数数组 nums 。

返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。

列表中的每个区间范围[a, b] 应该按如下格式输出:

“a->b” ,如果 a != b
“a” ,如果 a == b

示例 1:

输入:nums = [0, 1, 2, 4, 5, 7]
输出:[“0->2”, “4->5”, “7”]
解释:区间范围是:
[0, 2] – > “0->2”
[4, 5] – > “4->5”
[7, 7] – > “7”

提示:
0 <= nums.length <= 20
-2^31 <= nums[i] <= 2^31 - 1
nums 中的所有值都 互不相同
nums 按升序排列

我们的思路是,使用双指针维护这个有序的区间,low维护这个区间的较小值,high维护这个区间的较大值;这里需要返回一个指向数组的数组指针,所以先开辟一个数组指针p,里面存放常量字符串,返回的长度先定义为0;这里使用sprintf函数将格式化数据写入字符串;注意这里,开辟一个空间,存放这个常量字符串的时候,因为这里输入的范围是-2^31到 2^31 - 1;

如:输入[-2147483648,-2147483647,2147483647];
输出就是[“-2147483648->-2147483647”,“2147483647”],加上’\0’,所以每一个常量字符串要开辟25个字节

		char** summaryRanges(int* nums, int numsSize, int* returnSize){char** p = (char**)malloc(sizeof(char*) * numsSize);*returnSize = 0;int i = 0;while (i < numsSize){//每次进来更新low,把当前i的值赋给low,i再++int low = i++;//因为i++完,所以要判断i是否小于numsSize//并且判断i现在所在的下标代表的元素是否是前一项+1,即判断是否有序//若有序,i往后走,直到不有序while (i < numsSize && nums[i] == nums[i - 1] + 1){i++;}//到这里就代表不有序了,但是i++完,所以有序的区间是low到i-1//所以将i-1赋给high,使用low和high维护这个区间int high = i - 1;//开辟一个空间,存放这个常量字符串//因为这里输入的范围是-2^31到 2^31 - 1,如:输入[-2147483648,-2147483647,2147483647]//输出就是["-2147483648->-2147483647","2147483647"],加上'\0',所以每一个常量字符串要开辟25个字节char* tmp = (char*)malloc(sizeof(char) * 25);//这里使用sprintf函数将格式化数据写入字符串sprintf(tmp, "%d", nums[low]);//判断low和high不相等,即区间不是单独一个值的时候,需要追加if (low < high){sprintf(tmp + strlen(tmp), "->");sprintf(tmp + strlen(tmp), "%d", nums[high]);}//把这个常量字符串放入数组指针p,下标为返回数组指针的长度,然后++p[(*returnSize)++] = tmp;}return p;}

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

相关文章

设计模式:外观模式

一、定义 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行&#xff0c;隐藏系统的复杂性&#xff0c;并向客户端提供了一个客户端可以访问系统的接口。 二、角色 Facade&#xff1a;系统对外的统一接口&#xff0c;客户端连接子系统功能的入口SubSystem子系统…

前端配置项

默认下载安装所需插件的时候会自动添加配置&#xff0c;但有时候可能需要自己去配&#xff0c;比如系统重装&#xff08;重装的是C盘&#xff0c;系统变量会丢失&#xff0c;软件在其他盘符并不需要重新下载&#xff09;。 前端开发涉及到需要配置变量的软件有&#xff1a;git…

Ps 毛玻璃效果

哈喽&#xff0c;各位小伙伴&#xff01;今天我们来学习一下如何制作毛玻璃效果&#xff1f; 复制图层 导入一张图片&#xff0c;Ctrlj复制一层&#xff0c;右键—智能对象&#xff08;目的&#xff1a;方便后期更换图片&#xff09; 画矩形 画矩形(不要描边)&#xff0c;…

day10 线程池及gdb调试多线程

目录 线程池的概念 概念&#xff1a; 必要性&#xff1a; 线程池的基本结构&#xff1a; 线程池的实现 完整代码 线程的GDB调试 线程池的概念 概念&#xff1a; 通俗的讲就是一个线程的池子&#xff0c;可以循环的完成任务的一组线程集合&#xff1b; 必要性&#xff…

Spring Security 权限控制

Spring Security 是一个为 Java 应用程序提供身份验证和授权功能的强大框架。其中一个核心特性就是能够为特定的资源强制执行权限和访问控制规则。本文将探讨 Spring Security 权限控制的场景、使用和实现原理。 场景 Spring Security 权限控制可以用于多种场景&#xff0c;其…

p74 应急响应-winlinux 分析后门勒索病毒攻击

数据来源 操作系统(windows,linux)应急响应&#xff1a; 常见危害&#xff1a;暴力破解&#xff0c;漏洞利用&#xff0c;流量攻击&#xff0c;木马控制(Webshell,PC 木马等)&#xff0c;病毒感染(挖矿&#xff0c;蠕虫&#xff0c;勒索等)常见分析&#xff1a;计算机账户&…

从4k到42k,软件测试工程师的涨薪史,给我看哭了

清明节一过&#xff0c;盲猜大家已经无心上班&#xff0c;在数着日子准备过五一&#xff0c;但一想到银行卡里的余额……瞬间心情就不美丽了。 最近&#xff0c;2023年高校毕业生就业调查显示&#xff0c;本科毕业月平均起薪为5825元。调查一出&#xff0c;便有很多同学表示自己…

计算机网络常见协议

文章目录 计算机网络TCP/IP协议TCP协议的三次握手和四次挥手TCP连接建立过程TCP连接断开过程为什么要三次握手&#xff1f;为什么要四次挥手&#xff1f; UDP协议HTTP协议 计算机网络 学习计算机网络&#xff0c;来记录一下。 TCP/IP协议 TCP/IP协议是Internet最基本的协议、…