【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;
}
相关推荐
满分观察网友z2 分钟前
递归与迭代的优雅之舞:我在评论区功能中悟出的“树”之道(104. 二叉树的最大深度)
后端·算法
m0_535064608 分钟前
类模版的相关案例
算法
小高0078 分钟前
掌握 requestFullscreen:网页全屏功能的实用指南与技巧
前端
Kiri霧10 分钟前
Kotlin重写函数中的命名参数
android·开发语言·javascript·kotlin
Chirp12 分钟前
手撕ultralytics,换用Lightning训练yolo模型
算法
前端付豪16 分钟前
22、前端工程化深度实践:构建、发布、CI/CD 流程重构指南
前端·javascript·架构
我是若尘22 分钟前
从“全大图”到“响应式加载”:企业级前端图片优化全攻略(含Vue/React自动化方案)
前端
北北~Simple22 分钟前
css 如何实现大屏4个占位 中屏2个 小屏幕1个
前端·css
在逃的吗喽25 分钟前
APIs案例及知识点串讲(上)
前端·javascript
CodeCraft Studio26 分钟前
DHTMLX Suite 9.2 重磅发布:支持历史记录、类Excel交互、剪贴板、拖放增强等多项升级
javascript·excel·交互·表格·dhtmlx·grid·网格