解题思路
- 利用字典存储 magazine中的所有字母出现的次数
- 遍历ransomNote,如果字典中没有相应的字母,以及有相应的值但是次数小于1即用光了,返回false
- 遍历完成说明完全包含,直接返回true
代码
var canConstruct = function (ransomNote, magazine) {
const magazineMap = new Map()
for (let i = 0; i < magazine.length; i++) {
const key = magazine[i]
if (magazineMap.has(key)) {
let val = magazineMap.get(key)
magazineMap.set(key, val + 1)
} else {
magazineMap.set(key, 1)
}
}
for (let i = 0; i < ransomNote.length; i++) {
const key = ransomNote[i]
if (magazineMap.has(key)) {
let val = magazineMap.get(key)
magazineMap.set(key, val - 1)
if(val < 1) {
return false
}
} else {
return false
}
}
return true
};