【Leetcode 383】赎金信 —— 哈希表 有注解

给你两个字符串:ransomNotemagazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false

magazine 中的每个字符只能在 ransomNote 中使用一次。

示例 1:

复制代码
输入:ransomNote = "a", magazine = "b"
输出:false

示例 2:

复制代码
输入:ransomNote = "aa", magazine = "ab"
输出:false

示例 3:

复制代码
输入:ransomNote = "aa", magazine = "aab"
输出:true

哈希表 有注解

TypeScript 复制代码
// 哈希表
function canConstruct(ransomNote: string, magazine: string): boolean {
  const mLen = magazine.length;
  if (mLen < ransomNote.length) return false;
  const magazineMap = new Map<string, number>();
  //统计 magazine 的字母出现次数
  for (const key of magazine) {
    const val = magazineMap.has(key) ? magazineMap.get(key)! + 1 : 1;
    magazineMap.set(key, val);
  }

  for (const key of ransomNote) {
    // 用 ransomNote 字母 抵消 magazine 的字母
    if (magazineMap.has(key) && magazineMap.get(key)) {
      magazineMap.set(key, magazineMap.get(key)! - 1);
    } else {
      // magazine 字母数不够,返回false
      return false;
    }
  }
  return true;
}
相关推荐
可触的未来,发芽的智生6 分钟前
触摸未来2025-10-25:蓝图绘制
javascript·python·神经网络·程序人生·自然语言处理
用户47949283569156 分钟前
typeof null === 'object':JavaScript 最古老的 bug 为何 30 年无法修复?
前端·javascript·面试
__WanG26 分钟前
如何编写标准StatefulWidget页面
前端·flutter
非凡ghost37 分钟前
By Click Downloader(下载各种在线视频) 多语便携版
前端·javascript·后端
非凡ghost41 分钟前
VisualBoyAdvance-M(GBA模拟器) 中文绿色版
前端·javascript·后端
非凡ghost43 分钟前
K-Lite Mega/FULL Codec Pack(视频解码器)
前端·javascript·后端
爪哇部落算法小助手43 分钟前
每日两题day23
算法
麦麦大数据1 小时前
F034 vue+neo4j 体育知识图谱系统|体育文献知识图谱vue+flask知识图谱管理+d3.js可视化
javascript·vue.js·知识图谱·neo4j·文献·体育·知识图谱管理
LinXunFeng1 小时前
Flutter 多仓库本地 Monorepo 方案与体验优化
前端·flutter·架构
非凡ghost1 小时前
ProcessKO(查杀隐藏危险进程)多语便携版
前端·javascript·后端