力扣:383. 赎金信
题目链接: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
提示:
- 1 <= ransomNote.length, magazine.length <= 105
- ransomNote 和 magazine 由小写英文字母组成
思路和算法:
这题和242题思路差不多,采用哈希表。
首先用一个哈希表 h a s h hash hash 插入字符串 m a g a z i n e magazine magazine 中的所有元素,其中 h a s h hash hash 表的 k e y key key 值为字符串 m a g a z i n e magazine magazine 中的字符, v a l u e value value 值为字符出现的次数。然后依次遍历字符串 r a n s o m N o t e ransomNote ransomNote 中的字符,通过 h a s h hash hash 的 c o u n t count count 方法来判断字符是否存在,如果存在,则 k e y key key 值对应得 v a l u e value value 值减一。此时如果 v a l u e value value 值为负数,则代表 m a g a z i n e magazine magazine 中该字符出现次数少于 r a n s o m N o t e ransomNote ransomNote 中的,返回 f a l s e false false ;如果用 c o u n t count count 方法判断不存在,则直接返回 f a l s e false false 。
代码(c++):
//哈希表
class Solution {public:bool canConstruct(string ransomNote, string magazine) {if (ransomNote.length() > magazine.length()) return false;unordered_map<char, int> hash; //存放magazine中的字符和出现次数for (char ch : magazine) {if (hash.count(ch)) //如果字符存在,则出现次数value值加1hash[ch] += 1;elsehash[ch] = 1; //不存在则插入字符}for (char ch : ransomNote) {if (hash.count(ch)) { //如果字符存在,则对应的value值减1hash[ch] -= 1;if (hash[ch] < 0) return false; }else return false; //不存在返回false}return true;}
};
力扣:383. 赎金信相关推荐
- 力扣 383. 赎金信
目录 第一站 LeetCode 新手村 前言 383. 赎金信 题目描述 解题思路 代码 总结 题目来源 第一站 LeetCode 新手村 前言 最近玩OJ赛,发现对算法的理解还需要更加扎实,co ...
- day16力扣383赎金信
链接383. 赎金信 - 力扣(Leetcode) 题目 思路: 设置哈希表作用的数组temp,储存ransomNote中每个字母的个数 通过遍历magnize字符串,使magnize中每个字母出现的 ...
- 力扣383.赎金信(java语言散列表法)
题目描述: 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成. 如果可以,返回 true :否则返回 false . ...
- 力扣383.赎金信(JavaScript)
var canConstruct = function(ransomNote, magazine) {let arr=new Array(26).fill(0)let a='a'.charCodeAt ...
- 代码随想录算法训练营15期 Day7 | 454.四数相加II、 383. 赎金信 、15. 三数之和、18. 四数之和
目录 力扣 454.四数相加II 题解:哈希表-map-unordered_map 力扣 383.赎金信 题解1:暴力解法 题解2:哈希表--数组 力扣 454.四数相加II 题目: 给你四个整数数组 ...
- (补)算法训练第七天|力扣454.四数相加II ,383. 赎金信,15. 三数之和,18. 四数之和
代码随想录算法训练营第七天|力扣454.四数相加II ,383. 赎金信,15. 三数之和,18. 四数之和 454.四数相加II 题目链接:四数相加II 参考:https://programmerc ...
- 代码随想录算法训练营第六天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和。
代码随想录算法训练营第六天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和. 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和 454.四数相加I ...
- 代码随想录算法训练营第7天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和
454.四数相加II 力扣题目链接 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i]+B[j]+C[k]+D[l] = 0. 为了 ...
- 代码随想录算法训练营15期 Day 7 | 454.四数相加II 、 383. 赎金信 、15. 三数之和 、18. 四数之和
昨天看了一下别的东西,导致昨天没有练习打卡,今天补上昨天的学习知识. 454.四数相加II 建议:本题是 使用map 巧妙解决的问题,好好体会一下 哈希法 如何提高程序执行效率,降低时间复杂度,当然使 ...
最新文章
- Java多态-如何理解父类引用指向子类对象
- Maximum Xor Secondary(单调栈好题)
- Win11更新22000.71:优化任务栏、右键菜单视觉风格
- SAP中的默认帐户与密码
- 微软官方及第三方SDK http://msdn.microsoft.com/zh-cn/jj923044
- 信息学奥赛一本通(1101:不定方程求解)
- 精通Android自定义View(十六)invalidate方法和requestLayout方法
- SAP License:SAP凭证的类别和记账码
- Network in Network 算法解析
- hashmap hash冲突怎么解决_让我再撸一次HashMap
- linux启动SSH及开机自动启动
- auto_ptr http://www.cnblogs.com/jtf-china/archive/2011/06/09/2076792.html
- 【开源教程8】疯壳·开源编队无人机-GPIO(LED 航情灯、信号灯控制)
- Winmail + Foxmail搭建企业内部邮件系统
- RSA前端加密,java后端解密
- 为什么计算机无法打开扫描机,为什么打印机无法扫描 打印机无法扫描是什么原因 - 云骑士一键重装系统...
- 安卓手机如何打开.crx文件_crx文件怎么打开
- matlab c2d tustin,Matlab中的c2d函数用法以及绘制传函的Bode图
- Vue设置浏览器title-icon
- GreenDao的简单学习(附带demo源码)