1189. Maximum Number of Balloons*
https://leetcode.com/problems/maximum-number-of-balloons/
题目描述
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.
C++ 实现 1
统计 text
里的每个字符的个数, 看它们能组成多少个 “balloon”.
我还在 LeetCode 的讨论区写了个回答: [C++] Easy To Understand Solution
class Solution {
public:
int maxNumberOfBalloons(string text) {
unordered_map<char, int> record;
for (auto &c : text) record[c] ++;
int count = 0, i = 0;
string target = "balloon";
while (true) {
int idx = i % target.size();
if (record[target[idx]] == 0) break;
if (idx == target.size() - 1) count ++;
record[target[idx]] --;
++ i;
}
return count;
}
};
C++ 实现 2
看讨论区中很多答案是检查组成 “balloon” 的字符个数够不够, 取其中字符个数最小值.
class Solution {
public:
int maxNumberOfBalloons(string text) {
unordered_map<char, int> mm;
for (auto &i : text) mm[i] += 1;
return min(mm['b'], min(mm['a'], min(mm['l']/2, min(mm['o']/2, mm['n']))));
}
};