【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;
}
相关推荐
驭渊的小故事4 分钟前
Spring Boot 注解详解01
java·前端·spring boot
a187927218317 分钟前
【算法】双指针与滑动窗口(三):相向双指针——比较、排除、收缩
算法·leetcode·双指针·滑动窗口·原理·相向双指针·算法讲解
pe7er10 分钟前
引子
前端·后端·架构
恋猫de小郭17 分钟前
CPF-Flutter 社区提出折叠场景分栏(平行视界) 方案
android·前端·flutter
aixingpan27 分钟前
aixingpan.cn API开发文档:api_docs_trichart_natal_marx_transit2接口指南
前端·php
AI 小老六27 分钟前
Agent 记忆系统难在取舍
人工智能·算法·架构·agent·memory·harness
csj5028 分钟前
前端基础之《React(13)—表单绑定、列表渲染》
前端·react.js
大熊背29 分钟前
《Color constancy by characterization of illumination chromaticity》之色度色域最大化算法(一)
数码相机·算法·白平衡·色度色域
csj5029 分钟前
前端基础之《React(12)—条件渲染》
前端·react.js
不会就选b30 分钟前
算法日常・每日刷题--<贪心>13
算法