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.
这题非常简单,看看每个字母能组成的最小的数量,取小即可。我这个算法的空间复杂度还能降低,只要存5个即可。
class MaximumNumberofBalloons : public Solution {
public:
void Exec() {
}
int maxNumberOfBalloons(string text) {
int counts[26] = {0};
for (auto c : text) {
counts[c - 'a']++;
}
int count = counts['b' - 'a'];
count = counts['a' - 'a'] < count ? counts['a' - 'a'] : count;
count = counts['l' - 'a'] / 2 < count ? counts['l' - 'a'] / 2 : count;
count = counts['o' - 'a'] / 2 < count ? counts['o' - 'a'] / 2 : count;
count = counts['n' - 'a'] < count ? counts['n' - 'a'] : count;
return count;
}
};