题目链接: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. 赎金信相关推荐

  1. 力扣 383. 赎金信

    ​​目录 第一站 LeetCode 新手村 前言 383. 赎金信 题目描述 解题思路 代码 总结 题目来源 第一站 LeetCode 新手村 前言 最近玩OJ赛,发现对算法的理解还需要更加扎实,co ...

  2. day16力扣383赎金信

    链接383. 赎金信 - 力扣(Leetcode) 题目 思路: 设置哈希表作用的数组temp,储存ransomNote中每个字母的个数 通过遍历magnize字符串,使magnize中每个字母出现的 ...

  3. 力扣383.赎金信(java语言散列表法)

    题目描述: 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成. 如果可以,返回 true :否则返回 false . ...

  4. 力扣383.赎金信(JavaScript)

    var canConstruct = function(ransomNote, magazine) {let arr=new Array(26).fill(0)let a='a'.charCodeAt ...

  5. 代码随想录算法训练营15期 Day7 | 454.四数相加II、 383. 赎金信 、15. 三数之和、18. 四数之和

    目录 力扣 454.四数相加II 题解:哈希表-map-unordered_map 力扣 383.赎金信 题解1:暴力解法 题解2:哈希表--数组 力扣 454.四数相加II 题目: 给你四个整数数组 ...

  6. (补)算法训练第七天|力扣454.四数相加II ,383. 赎金信,15. 三数之和,18. 四数之和

    代码随想录算法训练营第七天|力扣454.四数相加II ,383. 赎金信,15. 三数之和,18. 四数之和 454.四数相加II 题目链接:四数相加II 参考:https://programmerc ...

  7. 代码随想录算法训练营第六天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和。

    代码随想录算法训练营第六天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和. 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和 454.四数相加I ...

  8. 代码随想录算法训练营第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. 为了 ...

  9. 代码随想录算法训练营15期 Day 7 | 454.四数相加II 、 383. 赎金信 、15. 三数之和 、18. 四数之和

    昨天看了一下别的东西,导致昨天没有练习打卡,今天补上昨天的学习知识. 454.四数相加II 建议:本题是 使用map 巧妙解决的问题,好好体会一下 哈希法 如何提高程序执行效率,降低时间复杂度,当然使 ...

最新文章

  1. Java多态-如何理解父类引用指向子类对象
  2. Maximum Xor Secondary(单调栈好题)
  3. Win11更新22000.71:优化任务栏、右键菜单视觉风格
  4. SAP中的默认帐户与密码
  5. 微软官方及第三方SDK http://msdn.microsoft.com/zh-cn/jj923044
  6. 信息学奥赛一本通(1101:不定方程求解)
  7. 精通Android自定义View(十六)invalidate方法和requestLayout方法
  8. SAP License:SAP凭证的类别和记账码
  9. Network in Network 算法解析
  10. hashmap hash冲突怎么解决_让我再撸一次HashMap
  11. linux启动SSH及开机自动启动
  12. auto_ptr http://www.cnblogs.com/jtf-china/archive/2011/06/09/2076792.html
  13. 【开源教程8】疯壳·开源编队无人机-GPIO(LED 航情灯、信号灯控制)
  14. Winmail + Foxmail搭建企业内部邮件系统
  15. RSA前端加密,java后端解密
  16. 为什么计算机无法打开扫描机,为什么打印机无法扫描 打印机无法扫描是什么原因 - 云骑士一键重装系统...
  17. 安卓手机如何打开.crx文件_crx文件怎么打开
  18. matlab c2d tustin,Matlab中的c2d函数用法以及绘制传函的Bode图
  19. Vue设置浏览器title-icon
  20. GreenDao的简单学习(附带demo源码)

热门文章

  1. set 有序吗js_JavaScript Set 集合
  2. 转载-一个中科大差生的8年程序员工作总结 - 陈小房的文章 - 知乎
  3. 小度音箱dueros授权
  4. 新型追踪方式之——浏览器指纹(浏览器指纹插件)
  5. 计算机更新一直在57转怎么办,联想电脑正在更新怎么办
  6. 工业无线路由器远程数据采集解决方案
  7. 体验设计是什么?链接一切?决定未来的10种人之一:用户体验设计师。
  8. 深入浅出,白话文Docker入门,万字笔记
  9. [cocos2d-x]躲蜘蛛游戏设计[进阶]
  10. 42.Isaac教程--超像素