【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;
}
相关推荐
光羽隹衡几秒前
决策树项目——电信客户流失预测
算法·决策树·机器学习
TL滕几秒前
从0开始学算法——第二十一天(高级链表操作)
笔记·学习·算法
CoovallyAIHub几秒前
无人机低空视觉数据集全景解读:从单机感知到具身智能的跨越
深度学习·算法·计算机视觉
学编程就要猛1 分钟前
算法:1.移动零
java·算法
杜子不疼.1 分钟前
【LeetCode 35 & 69_二分查找】搜索插入位置 & x的平方根
算法·leetcode·职场和发展
YYDS3142 分钟前
次小生成树
c++·算法·深度优先·图论·lca最近公共祖先·次小生成树
北冥有一鲲5 分钟前
LangChain.js:Tool、Memory 与 Agent 的深度解析与实战
开发语言·javascript·langchain
xu_yule5 分钟前
算法基础(区间DP)
数据结构·c++·算法·动态规划·区间dp
天骄t6 分钟前
信号VS共享内存:进程通信谁更强?
算法
Mintopia6 分钟前
静态内容页该用HTML还是Next.js展示更好
前端·html·next.js