「这是我参与2022首次更文挑战的第27天,活动详情查看:2022首次更文挑战」
题目
给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。
字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。
示例1
输入: text = "nlaebolko"
输出: 1
示例2
输入: text = "loonbalxballpoon"
输出: 2
示例3
输入: text = "leetcode"
输出: 0
题解
统计模拟
简单类型的题目,直接根据题目描述模拟即可。
- 第一步:枚举字符串,统计 中单词字符串数量,并将使用的字符串的数量存放在变量 中
- 枚举字符串 ,将单词 中使用的字符串逐一在 中查找
- 有因为组成一个 单词需要,所以在遇到的时候需要将字符串存在的数量减半,并且向下去整
- 所以在字符串最少数量的就是最多能组成目标单词 的数量
- 返回结果
注意:
- 组成的单词数量是整数,所以在遇到数量减半,要向下去整
- 单词 使用的字符可能在不存在,所以字符串在 中查找的时候,需要将 undefined 转为0
根据上述思路编辑代码如下:
完整代码
var maxNumberOfBalloons = function(text) {
const map = {};
for(let i = 0 ; i < text.length ; i++){
map[text[i]] = (map[text[i]] || 0 )+ 1
}
const s = 'balloon';
let result = Infinity
for(let i = 0 ; i < s.length ; i++){
if(s[i] === 'l' || s[i] === 'o'){
result = Math.min(result, Math.floor((map[s[i]] || 0)/2) )
}else{
result = Math.min(result, map[s[i]] || 0 )
}
}
return result
};
结语
或许本题过于简单,许多人可以一眼看到答案。但我想,既然这题存在,就值得记录。如有疑问可以评论区讨论。