grep 文字搜尋工具
阿新 • • 發佈:2022-05-11
給你一個字串 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; } };