383. Ransom Note
Problem
Tags: Hash Table
, String
, Counting
Given two strings ransomNote
and magazine
, return true
if ransomNote
can be constructed by using the letters from magazine
and false
otherwise.
Each letter in magazine
can only be used once in ransomNote
.
Example 1:
Input: ransomNote = "a", magazine = "b"
Output: false
Example 2:
Input: ransomNote = "aa", magazine = "ab"
Output: false
Example 3:
Input: ransomNote = "aa", magazine = "aab"
Output: true
Constraints:
1 <= ransomNote.length, magazine.length <= 10^5
ransomNote
andmagazine
consist of lowercase English letters.
Code
JS
// 383. Ransom Note (4/12/53726)
// Runtime: 92 ms (77.67%) Memory: 41.11 MB (94.82%)
/**
* @param {string} ransomNote
* @param {string} magazine
* @return {boolean}
*/
function canConstruct(ransomNote, magazine) {
const map = {};
for (let i = 0; i < magazine.length; i++) map[magazine[i]] = (map[magazine[i]] || 0) + 1;
for (let i = 0; i < ransomNote.length; i++) {
if (!map[ransomNote[i]]) return false;
map[ransomNote[i]]--;
}
return true;
}