当前位置: 首页 > news >正文

383. 赎金信

给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。

(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)

注意:

你可以假设两个字符串均只含有小写字母。

canConstruct("a", "b") -> false
canConstruct("aa", "ab") -> false
canConstruct("aa", "aab") -> true

思路

哈希解法
因为题目说只有小写字母,那可以采用空间换取时间的哈希策略,用一个长度为26的数组来记录magazine里字母出现的次数。

然后再用ransomNote去验证这个数组是否包含了ransomNote所需要的所有字母。

依然是数组在哈希法中的应用。

一些同学可能想,用数组干啥,都用map完事了,其实在本题的情况下,使用map的空间消耗要比数组大一些的,因为map要维护红黑树或者哈希表,而且还要做哈希函数,是费时的!数据量大的话就能体现出来差别了。 所以数组更加简单直接有效!

代码如下:
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
int record[26] = {0};
//add
if (ransomNote.size() > magazine.size()) {
return false;
}
for (int i = 0; i < magazine.length(); i++) {
// 通过record数据记录 magazine里各个字符出现次数
record[magazine[i]-'a'] ++;
}
for (int j = 0; j < ransomNote.length(); j++) {
// 遍历ransomNote,在record里对应的字符个数做--操作
record[ransomNote[j]-'a']--;
// 如果小于零说明ransomNote里出现的字符,magazine没有
if(record[ransomNote[j]-'a'] < 0) {
return false;
}
}
return true;
}
};

http://www.jsqmd.com/news/546037/

相关文章:

  • 星露谷物语农场规划器:3步打造完美农场的终极指南
  • 计算机毕业设计springboot在线病患管理系统 基于SpringBoot的智慧医疗就诊服务平台设计与实现 基于Java Web的医院数字化门诊住院一体化系统开发
  • Zotero文献引用必看:3个隐藏设置让你的Word排版更专业
  • 电脑能登QQ却打不开网页?3分钟搞定DNS配置(Win10/11通用)
  • 保姆级避坑指南:用Gromacs 2024跑小分子-蛋白复合物MD模拟,从拓扑生成到结果分析
  • 内存检测工具Memtest86+全解析:从故障排查到系统稳定性测试
  • DLT Viewer诊断日志分析实战指南:快速掌握汽车电子系统调试的核心工具
  • 当多线雷达遇上RTK:一个能跑工业现场的SLAM方案
  • 微信支付回调通知收不到的5个隐藏坑(附.NET Core实战解决方案)
  • 医学图像分类实战:基于kvasir v2胃病数据集的深度卷积网络性能对比
  • 【Python】Hydra 与 OmegaConf:构建动态可维护的机器学习配置系统
  • GLM-OCR场景应用:教育资料数字化、商务文档信息抽取实战
  • 告别HttpListener!在WPF里优雅运行ASP.NET Core的3个实战技巧(.NET 8版)
  • 别再只会用Arduino了!用STM32 HAL库驱动42步进电机(TB6600驱动器)的保姆级教程
  • LPDDR5读训练避坑指南:DVFSC功能开启后,你的RL和tWCKPRE参数算对了吗?
  • 5G核心网运维日记:一次AMF重分配故障排查,我是如何定位网络切片选择问题的?
  • Modelsim仿真Objects窗口一片空白?别急着重装,试试这个被忽略的优化选项设置
  • Python实战:用Holt-Winters三参数指数平滑预测电商季节性销量(附完整代码)
  • HarmonyOS毕业设计避坑指南:你的‘智慧XX系统’为什么总被导师打回?
  • 语义通信:从理论到6G落地的关键技术演进与挑战
  • FAST-LIO2中的IMU与激光雷达时间对齐:原理与代码实现详解
  • 数字信号处理避坑指南:采样频率选错导致的频谱混叠案例分析
  • H5页面如何优雅跳转iOS App Store?解决点击后重复跳转的坑
  • 直流GIL绝缘子表面电荷积聚的电热耦合机理与电场畸变特性研究
  • 如何让微信聊天记录真正属于你:完整备份与分析终极指南
  • 保姆级教程:ROS1/ROS2下rosbag录制与播放的10个实战技巧(含脚本与launch文件)
  • uniApp离线打包实战避坑指南
  • Cesium材质系统避坑指南:为什么你的自定义Shader总报错?
  • 保姆级教程:在Ubuntu 20.04上用Docker搞定ReDroid云手机,并解决ARM应用兼容问题
  • 3个智能化解决方案让科研工作者实现投稿管理效率革命:Elsevier Tracker无缝集成工具