Leetcode 1189. “气球” 的最大数量
作者:互联网
给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。
字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。
示例 1:
输入:text = "nlaebolko"
输出:1
示例 2:
输入:text = "loonbalxballpoon"
输出:2
示例 3:
输入:text = "leetcode"
输出:0
提示:
- 1 <= text.length <= 10^4
- text 全部由小写英文字母组成
Code:
class Solution {
public:
typedef pair<char, int> PAIR;
struct CmpByValue {
bool operator()(const PAIR& lhs, const PAIR& rhs) {
return lhs.second < rhs.second;
}
};
int maxNumberOfBalloons(string text) {
//balloon
map<char,int>mymap;
string temp="";
for(int i=0;i<text.size();i++)
{
if(text[i]=='b'||
text[i]=='a'||
text[i]=='l'||
text[i]=='o'||
text[i]=='n')
{
mymap[text[i]]++;
}
}
//把map中元素转存到vector中
vector<PAIR> name_score_vec(mymap.begin(), mymap.end());
//对vector排序
sort(name_score_vec.begin(), name_score_vec.end(), CmpByValue());
int minnun=0;
if(name_score_vec.size()!=5)
return 0;
for (int i = 0; i != name_score_vec.size(); ++i) {
if(name_score_vec[i].first=='a'||
name_score_vec[i].first=='b'||
name_score_vec[i].first=='n')
{
minnun=name_score_vec[i].second;
break;
}
}
int minnun2=0;
for (int i = 0; i != name_score_vec.size(); ++i) {
if(name_score_vec[i].first=='l'||
name_score_vec[i].first=='o')
{
minnun2=name_score_vec[i].second;
break;
}
}
for (int i = 0; i != name_score_vec.size(); ++i) {
if(name_score_vec[i].first=='a'||
name_score_vec[i].first=='b'||
name_score_vec[i].first=='n')
{
minnun=min(minnun,name_score_vec[i].second);
}
}
for (int i = 0; i != name_score_vec.size(); ++i) {
if(name_score_vec[i].first=='l'||
name_score_vec[i].first=='o')
{
minnun2=min(minnun2,name_score_vec[i].second);
}
}
while (1) {
if((minnun*2)>minnun2){
minnun--;
}
else
return minnun;
}
return 0;
}
};
标签:name,1189,int,text,Leetcode,score,vec,气球,first 来源: https://www.cnblogs.com/xiaohai123/p/16277224.html