-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path383_ransom_note.js
49 lines (43 loc) · 1.06 KB
/
383_ransom_note.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
* @param {string} ransomNote
* @param {string} magazine
* @return {boolean}
*/
var canConstruct = function (ransomNote, magazine) {
if (!ransomNote || !magazine || ransomNote.length > magazine.length) {
return false;
}
const mHashmap = new Map();
const rHashmap = new Map();
let rIndex = ransomNote.length - 1;
ransomNote = ransomNote.split('');
for (const mElement of magazine) {
let mCount = mHashmap.get(mElement);
if (mCount) {
mHashmap.set(mElement, mCount + 1);
} else {
mHashmap.set(mElement, 1);
}
if (rIndex >= 0) {
let rElement = ransomNote[rIndex];
let rCount = rHashmap.get(rElement);
if (rCount) {
rHashmap.set(rElement, rCount + 1);
} else {
rHashmap.set(rElement, 1);
}
rIndex--;
}
}
let output = false;
for (const rElement of rHashmap.keys()) {
if (mHashmap.get(rElement) >= rHashmap.get(rElement)) {
output = true;
} else {
output = false;
break
}
}
return output;
};
console.log(canConstruct("ce", "e"));