Skip to content
On this page

383. 赎金信

原题链接: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

提示:

1 <= ransomNote.length, magazine.length <= 105
- `ransomNote` 和 `magazine` 由小写英文字母组成

难度: Easy


题解代码

javascript
/**
 * @param {string} ransomNote
 * @param {string} magazine
 * @return {boolean}
 */
var canConstruct = function(ransomNote, magazine) {
  const hashA = {}
  const hashB = {}
  while(magazine.length) {
      const s = magazine.slice(0, 1)
      hashB[s] = (hashB[s] || 0) + 1
      magazine = magazine.slice(1)
  }
  while(ransomNote.length) {
      const s = ransomNote.slice(0, 1)
      if (!(s in hashB)) return false
      hashA[s] = (hashA[s] || 0) + 1
      if (hashA[s] > hashB[s]) return false
      ransomNote = ransomNote.slice(1)
  }
  return true
};

技术文档集合