【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;
}
相关推荐
Gary jie几秒前
OpenClaw启动日志详细分析
前端·chrome
择势5 分钟前
macOS App 签名与公证流程详解及一键自动化
前端
黎阳之光6 分钟前
AI数智筑防线 绿色科技启新篇,如何用硬核技术赋能生态安全双升级
人工智能·科技·算法·安全·数字孪生
2201_758642648 分钟前
自定义内存检测工具
开发语言·c++·算法
Westward-sun.14 分钟前
矿物分类实战(一):从异常值到标准化——数据清洗全流程拆解
人工智能·算法·机器学习·数据清洗
英俊潇洒美少年17 分钟前
Vue3 中 watch的 flush 选项(默认无/`post`/`sync`)的区别
前端·javascript·vue.js
闲云一鹤20 分钟前
Python 入门(三)- PyAutoGUI 自动化教程
前端·python·黑客
D_C_tyu22 分钟前
HTML | 结合Canvas开发具有智能寻路功能的贪吃蛇小游戏实战详解
javascript·算法·游戏·html·bfs
Jay-r25 分钟前
樱花雨特效 WebGL实现 短视频同款浪漫视觉效果(附源码下载)
开发语言·javascript·ecmascript·编程·webgl·代码·樱花雨
凤山老林26 分钟前
Js如何实现一个抽奖程序
前端·javascript·vue.js