【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;
}
相关推荐
yuzhiboyouye1 分钟前
web前端英语面试
前端·面试·状态模式
如果'\'真能转义说27 分钟前
OOXML 文档格式剖析:哈希、ZIP结构与识别
xml·算法·c#·哈希算法
canonical_entropy1 小时前
下一代低代码渲染框架 nop-chaos-flux 的设计原则
前端·低代码·前端框架
东方小月1 小时前
5分钟搞懂Harness Engineering(驾驭工程):从提示词到AI Agent的进化之路
前端·后端·架构
我叫黑大帅1 小时前
为什么需要 @types/react?解决“无法找到模块 react 的声明文件”报错
前端·javascript·面试
之歆2 小时前
DAY_21JavaScript 深度解析:数组(Array)与函数(Function)(一)
前端·javascript
梦梦代码精2 小时前
BuildingAI 上部署自定义工作流智能体:5 个实用技巧
大数据·人工智能·算法·开源软件
XinZong2 小时前
【AI社交】基于OpenClaw自研轻量化AI社交平台实战
前端
Le_ee3 小时前
ctfweb:php/php短标签/.haccess+图片马/XXE
开发语言·前端·php