前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Leetcode -383.赎金信 -387.字符串中的第一个唯一字符】

【Leetcode -383.赎金信 -387.字符串中的第一个唯一字符】

作者头像
YoungMLet
发布2024-03-01 09:44:18
910
发布2024-03-01 09:44:18
举报
文章被收录于专栏:C++/LinuxC++/Linux

Leetcode -383.赎金信

题目:给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。

示例 1: 输入:ransomNote = “a”, magazine = “b” 输出:false

示例 2: 输入:ransomNote = “aa”, magazine = “ab” 输出:false

示例 3: 输入:ransomNote = “aa”, magazine = “aab” 输出:true

我们的思路是,创建两个数组并初始化为0,将两个字符串中的元素分别作为这两个数组的下标记录它们出现的次数,最后比较它们的出现次数的关系;下面看代码以及注释:

代码语言:javascript
复制
		bool canConstruct(char* ransomNote, char* magazine)
		{
		    //创建两个数组并初始化为0
		    int hash[26] = { 0 };
		    int tmp[26] = { 0 };
		
		    //hash数组以ransomNote的元素减去'a'作为下标,每次相同的元素累加起来
		    for (int i = 0; i < strlen(ransomNote); i++)
		    {
		        hash[ransomNote[i] - 'a'] += 1;
		    }
		
		    //tmp数组以magazine的元素减去'a'作为下标,每次相同的元素也累加起来
		    for (int i = 0; i < strlen(magazine); i++)
		    {
		        tmp[magazine[i] - 'a'] += 1;
		    }
		
		    //最后比较这两个数组,在26个字母范围内,
		    //如果是相同的字母,在hash数组中存放的个数大于tmp数组中的个数,就返回false
		    //因为要使magazine这个字符串中的元素可以组成ransomNote这个字符串,
		    //那么tmp数组中的以magazine字符串的元素作为下标的元素个数必须要大于hash数组中的
		    for (int i = 0; i < 26; i++)
		    {
		        if (hash[i] > tmp[i])
		        {
		            return false;
		        }
		    }
		
		    //如果前面没有返回,就返回true
		    return true;
		}

Leetcode - 387.字符串中的第一个唯一字符

题目:给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 - 1 。

示例 1: 输入 : s = “leetcode” 输出 : 0

示例 2 : 输入 : s = “loveleetcode” 输出 : 2

示例 3 : 输入 : s = “aabb” 输出 : -1

我们的思路是,创建一个数组并初始化为0,以s字符串中的元素s[ i ]作为这个数组的下标,记录每个元素出现的次数;然后检查数组以s[ i ]为下标第一次等于1的位置,返回 i 这个位置即可;

代码语言:javascript
复制
		int firstUniqChar(char* s)
		{
		    //创建一个hash数组并初始化为0
		    int hash[26] = { 0 };
		
		    //以s字符串中的元素s[i]作为hash数组的下标,记录s[i]出现的次数
		    for (int i = 0; i < strlen(s); i++)
		    {
		        hash[s[i] - 'a'] += 1;
		    }
		
		    //检查数组以s[i]为下标第一次等于1的位置,返回i即可
		    for (int i = 0; i < strlen(s); i++)
		    {
		        if (hash[s[i] - 'a'] == 1)
		        {
		            return i;
		        }
		    }
		
		    //没有即返回-1
		    return -1;
		}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-02-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Leetcode -383.赎金信
  • Leetcode - 387.字符串中的第一个唯一字符
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档