Formatted question description: https://leetcode.ca/all/1189.html

1189. Maximum Number of Balloons (Easy)

Given a string text, you want to use the characters of text to form as many instances of the word "balloon" as possible.

You can use each character in text at most once. Return the maximum number of instances that can be formed.

 

Example 1:

Input: text = "nlaebolko"
Output: 1

Example 2:

Input: text = "loonbalxballpoon"
Output: 2

Example 3:

Input: text = "leetcode"
Output: 0

 

Constraints:

  • 1 <= text.length <= 10^4
  • text consists of lower case English letters only.

Companies:
Wayfair

Related Topics:
Hash Table, String

Solution 1.

We can also use undered_map which makes the code simpler. But I found it’s slower with unordered_map.

// OJ: https://leetcode.com/problems/maximum-number-of-balloons/
// Time: O(N)
// Space: O(1)
class Solution {
public:
    int maxNumberOfBalloons(string text) {
        int cnt[26] = {0};
        for (char c : text) cnt[c - 'a']++;
        return min({ cnt['b' - 'a'], cnt['a' - 'a'], cnt['n' - 'a'],
                     cnt['l' - 'a'] / 2, cnt['o' - 'a'] / 2 });
    }
};

Java

  • class Solution {
        public int maxNumberOfBalloons(String text) {
            int[] count = new int[26];
            char[] array = text.toCharArray();
            for (char c : array)
                count[c - 'a']++;
            int max = Integer.MAX_VALUE;
            max = Math.min(max, count['b' - 'a']);
            max = Math.min(max, count['a' - 'a']);
            max = Math.min(max, count['l' - 'a'] / 2);
            max = Math.min(max, count['o' - 'a'] / 2);
            max = Math.min(max, count['n' - 'a']);
            return max;
        }
    }
    
  • // OJ: https://leetcode.com/problems/maximum-number-of-balloons/
    // Time: O(N)
    // Space: O(1)
    class Solution {
    public:
        int maxNumberOfBalloons(string text) {
            int cnt[26] = {0};
            for (char c : text) cnt[c - 'a']++;
            return min({ cnt['b' - 'a'], cnt['a' - 'a'], cnt['n' - 'a'],
                         cnt['l' - 'a'] / 2, cnt['o' - 'a'] / 2 });
        }
    };
    
  • # 1189. Maximum Number of Balloons
    # https://leetcode.com/problems/maximum-number-of-balloons/
    
    class Solution:
        def maxNumberOfBalloons(self, text: str) -> int:
            cnt = collections.Counter(text)
            
            return min(cnt["b"], cnt["a"], cnt["l"] // 2, cnt["o"] // 2, cnt["n"])
    
    

All Problems

All Solutions