【LeetCode刷题】“气球” 的最大数量


题目

给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。
字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。

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

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

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

题解

今天的每日一题,一道挺简单的题目,直接统计输入字符串中b, a, l, o, n的字母个数再取最小值就好了,其中因为balloon中l和o出现两次,所以统计结果要除以2。

代码

class Solution {
    public int maxNumberOfBalloons(String text) {
        if(text == null || text.length() == 0) return 0;

        char[] chs = text.toCharArray();
        HashMap<Character, Integer> map = new HashMap();

        for(char i : chs) {
            // 只统计必要的字符即可
            if(i == 'b' || i == 'a' || i == 'l' 
               || i == 'o' || i == 'n') {
                if(map.get(i) == null) map.put(i, 1);
                else map.put(i, map.get(i)+1);
            }
        }

        int[] res = new int[5];
        for(char k : map.keySet()) {
            if(k == 'b') res[0] = map.get(k);
            else if(k == 'a') res[1] = map.get(k);
            else if(k == 'n') res[2] = map.get(k);
            else if(k == 'l') res[3] = map.get(k) / 2;
            else  res[4] = map.get(k) / 2;
        }

        // 排序后数组第一个就是结果
        Arrays.sort(res);

        return res[0];
    }
}

声明:迟於|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 【LeetCode刷题】“气球” 的最大数量


栖迟於一丘