🏒

1189. “气球” 的最大数量

💚
难度: 简单

题目

1189. “气球” 的最大数量

给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。
字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。
示例 1:
notion image
输入:text = "nlaebolko"
输出:1
示例 2:
notion image
输入:text = "loonbalxballpoon"
输出:2
示例 3:
输入:text = "leetcode"
输出:0
提示:
  • 1 <= text.length <= 10^4
  • text 全部由小写英文字母组成

思路

  1. 先统计每个字符出现的次数
  1. 再计算出每个字符最多能组成多少个balloon
  1. 取最小值

题解

/**
 * @param {string} text
 * @return {number}
 */
var maxNumberOfBalloons = function(text) {
    let map = new Map()
    let target = 'balloon'
    for (let i = 0; i < text.length; i++) {
        let currChar = text.charAt(i)
        if (target.includes(currChar)) {
            map.has(currChar) ? map.set(currChar, map.get(currChar) + 1) : map.set(currChar, 1)
        }
    }
    if (map.size !== 5) {
        return 0
    }
    let maxWord = []
    map.forEach(((value, key) => {
        if (key === 'l' || key === 'o') {
            maxWord.push(Math.floor(value / 2))
        } else {
            maxWord.push(value)
        }
    }))
    return Math.min(...maxWord)
};
结果
执行用时:76 ms, 在所有 JavaScript 提交中击败了71.65%的用户
内存消耗:38.1 MB, 在所有 JavaScript 提交中击败了98.43%的用户
通过测试用例:25 / 25
 

优化点