0
点赞
收藏
分享

微信扫一扫

Leetcode 1189. “气球” 的最大数量

木樨点点 2022-09-16 阅读 126

Leetcode 1189. “气球” 的最大数量_i++


给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。

字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。

示例 1:

Leetcode 1189. “气球” 的最大数量_i++_02

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

示例 2:

Leetcode 1189. “气球” 的最大数量_字符串_03

输入: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;
}
};

举报

相关推荐

0 条评论