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

【赎金信】

在这里插入图片描述

初始理解问题

首先,我需要清楚地理解题目要求。题目给出了两个字符串:ransomNotemagazine。我们需要判断是否可以用 magazine 中的字符来构造 ransomNote。具体来说,magazine 中的每个字符只能使用一次,且必须满足 ransomNote 中每个字符的出现次数不超过 magazine 中对应字符的出现次数。

示例分析

为了更好地理解,我来看几个示例:

  1. 示例 1:

    • ransomNote = “a”, magazine = “b”
    • ransomNote 需要 1 个 ‘a’,但 magazine 中没有 ‘a’,所以返回 false
  2. 示例 2:

    • ransomNote = “aa”, magazine = “ab”
    • ransomNote 需要 2 个 ‘a’,但 magazine 只有 1 个 ‘a’,所以返回 false
  3. 示例 3:

    • ransomNote = “aa”, magazine = “aab”
    • ransomNote 需要 2 个 ‘a’ 和 0 个 ‘b’,magazine 有 2 个 ‘a’ 和 1 个 ‘b’,满足条件,所以返回 true

解题思路

为了判断 ransomNote 是否可以由 magazine 的字符构成,我们需要:

  1. 统计 ransomNote 中每个字符的出现次数。
  2. 统计 magazine 中每个字符的出现次数。
  3. 比较这两个统计结果:
    • 对于 ransomNote 中的每一个字符,magazine 中对应字符的出现次数必须不少于 ransomNote 中的。
    • 如果有任何一个字符不满足,就返回 false
    • 如果所有字符都满足,返回 true

代码实现分析

现在来看给定的代码:

class Solution {
public:bool canConstruct(string ransomNote, string magazine) {int ran[26]={0};int mag[26]={0};for(auto x:ransomNote){ran[x-'a']++;}for(auto x:magazine){mag[x-'a']++;}for(int i=0;i<26;i++){if(ran[i]>mag[i])return false;}return true;}
};
思路
  1. 初始化计数数组:

    • int ran[26]={0};:用于统计 ransomNote 中每个小写字母的出现次数,初始化为0。
    • int mag[26]={0};:用于统计 magazine 中每个小写字母的出现次数,初始化为0。
  2. 统计 ransomNote 的字符频率:

    • for(auto x:ransomNote) { ran[x-'a']++; }:
      • 遍历 ransomNote 的每个字符 x
      • x - 'a' 将字符转换为 0 到 25 的索引(‘a’ -> 0, ‘b’ -> 1, …, ‘z’ -> 25)。
      • ran[x-'a']++ 对应字符的计数加一。
  3. 统计 magazine 的字符频率:

    • for(auto x:magazine) { mag[x-'a']++; }:
      • 同理,遍历 magazine 的每个字符 x
      • mag[x-'a']++ 对应字符的计数加一。
  4. 比较两个频率数组:

    • for(int i=0;i<26;i++) { if(ran[i]>mag[i]) return false; }:
      • 对于每个字母(索引 0 到 25):
        • 如果 ransomNote 中的该字母数量 ran[i] 大于 magazine 中的 mag[i],则无法构造,返回 false
      • 如果所有字母都满足 ran[i] <= mag[i],则最后返回 true
class Solution {
public:bool canConstruct(string ransomNote, string magazine) {int ran[26]={0};int mag[26]={0};for(auto x:ransomNote){ran[x-'a']++;}for(auto x:magazine){mag[x-'a']++;}for(int i=0;i<26;i++){if(ran[i]>mag[i])return false;}return true;}
};
http://www.lryc.cn/news/625761.html

相关文章:

  • 环境变量不生效?
  • C#三大核心特性
  • 实现自己的AI视频监控系统-第一章-视频拉流与解码1
  • Laya的适配模式选择
  • 代码随想录算法训练营四十六天|图论part04
  • BROADCHIP广芯电子在各类电子产品的方案与应用
  • 企业如何让内部视频仅限指定域名播放,确保视频不被泄露?
  • 2025年8月16日(星期六):雨骑古莲村游记
  • 机器人控制基础:运动控制中的串级pid原理以及实现方案(包含代码示例)
  • 学习笔记分享——基于STM32的平衡车项目
  • 8.19打卡 DAY 46 通道注意力(SE注意力)
  • RabbitMQ处理流程详解
  • docker回炉重造
  • 无畏契约手游上线!手机远控模拟器畅玩、抢先注册稀有ID!
  • 概率论基础教程第5章 连续型随机变量(一)
  • Flask 路由与视图函数绑定机制
  • 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET... 拒绝访问
  • 概率论基础教程第4章 随机变量(四)
  • Android Cordova 开发 - Cordova 嵌入 Android
  • GaussDB 中 alter default privileges 的使用示例
  • 从H.264到AV1:音视频技术演进与模块化SDK架构全解析
  • Meta首款AR眼镜Hypernova呼之欲出,苹果/微美全息投入显著抢滩市场新增长点!
  • 搭建最新--若依分布式spring cloudv3.6.6 前后端分离项目--步骤与记录常见的坑
  • 磨砂玻璃登录页面使用教程 v0.1.1
  • 可靠性测试:软件稳定性的守护者
  • t12 low power design: power plan脚本分享(4) power stripe
  • 9.Ansible管理大项目
  • MCP(模型上下文协议):是否是 AI 基础设施中缺失的标准?
  • Flink原理与实践:第一章大数据技术概述总结
  • Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动