每日一题——LeetCode1189.气球的最大数量

方法一 个人方法:

统计text字符串中'b'、'a'、'l'、'o'、'n' 这几个字符出现的次数

l和n需要两个才能拼成一个balloon,所以碰到l和o加1,其他字符加2

最后求出出现次数最少的那个字符再除以2就是能拼凑成的单词数量,避免出现小数要使用向下取整

var maxNumberOfBalloons = function(text) {
    var arr={b:0,a:0,l:0,o:0,n:0},min=9999
    for(const char of text){
        if(arr[char]>=0){
           if(char=='l' || char=='o'){
               arr[char]++
           }else{
               arr[char]+=2
           }
        }
    }
    for(const char in arr){
        min=arr[char]<min?arr[char]:min
    }
    console.log(arr,min)
    min=Math.floor(min/2)
    return min
};

消耗时间和内存情况:

方法二 统计法

思路和方法一差不多,但写法有区别

var maxNumberOfBalloons = function(text) {
    const cnt = new Array(5).fill(0);
    for (const ch of text) {
        if (ch === 'b') {
            cnt[0]++;
        } else if (ch === 'a') {
            cnt[1]++;
        } else if (ch === 'l') {
            cnt[2]++;
        } else if (ch === 'o') {
            cnt[3]++;
        } else if (ch === 'n') {
            cnt[4]++;
        }
    }
    cnt[2] = Math.floor(cnt[2] / 2);
    cnt[3] = Math.floor(cnt[3] / 2);
    return _.min(cnt);
};

消耗时间和内存情况:

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值