Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false.
Each letter in the magazine string can only be used once in your ransom note.
Note:
You may assume that both strings contain only lowercase letters.
canConstruct("a", "b") -> false
canConstruct("aa", "ab") -> false
canConstruct("aa", "aab") -> true
/**
* @param {string} ransomNote
* @param {string} magazine
* @return {boolean}
*/
var canConstruct = function(ransomNote, magazine) {
if (ransomNote.length > magazine.length) {
return false;
}
const storage = {};
for (let i = 0; i < magazine.length; i++) {
let letter = magazine[i];
storage[letter] = storage[letter] || 0;
storage[letter]++;
}
for (let i = 0; i < ransomNote.length; i++) {
let letter = ransomNote[i];
if (!storage[letter]) {
return false;
}
storage[letter]--;
}
return true;
};