Bootstrap

每日一题(力扣1189. “气球” 的最大数量)

 题目描述

给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)

字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"

示例 1:

输入:text = "nlaebolko"
输出:1

示例 2:

输入:text = "loonbalxballpoon"
输出:2

示例 3:

输入:text = "leetcode"
输出:0

提示:

  • 1 <= text.length <= 104
  • text 全部由小写英文字母组成

方法一使用数组记录ball

    public int maxNumberOfBalloons(String text) {
     char []c =text.toCharArray();
     int []arr=new int[5];
        for (char ch :c) {
            switch (ch){
                case 'b':
                    arr[0]++;
                    break;
                case 'a':
                    arr[1]++;
                    break;
                case 'l':
                    arr[2]++;
                    break;
                case 'o':
                    arr[3]++;
                    break;
                case 'n':
                    arr[4]++;
                    break;
            }
        }
        int min=Integer.MAX_VALUE;
        arr[2]/=2;
        arr[3]/=2;
        for (int i = 0; i <arr.length ; i++) {
           min= Math.min(min,arr[i]);
        }
        return min;

    }

 方法二使用Map集合

       public int maxNumberOfBalloons(String text) {
     char []c =text.toCharArray();
     int []arr=new int[5];
        for (char ch :c) {
            switch (ch){
                case 'b':
                    arr[0]++;
                    break;
                case 'a':
                    arr[1]++;
                    break;
                case 'l':
                    arr[2]++;
                    break;
                case 'o':
                    arr[3]++;
                    break;
                case 'n':
                    arr[4]++;
                    break;
            }
        }
        int min=Integer.MAX_VALUE;
        arr[2]/=2;
        arr[3]/=2;
        for (int i = 0; i <arr.length ; i++) {
           min= Math.min(min,arr[i]);
        }
        return min;
    }

 重点其实统计传过来的字符串中的每个balloon气球中每个字母出现的次数,注意l和o最后要除以二,最后返回每个字母出现最小的个数即为balloon的个数

;