16 Ransom Note

118 阅读1分钟

解题思路

  1. 利用字典存储 magazine中的所有字母出现的次数
  2. 遍历ransomNote,如果字典中没有相应的字母,以及有相应的值但是次数小于1即用光了,返回false
  3. 遍历完成说明完全包含,直接返回true

代码

/**
 * @param {string} ransomNote
 * @param {string} magazine
 * @return {boolean}
 */
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
};