1170. 比较字符串最小字母出现频次
题目
1170. 比较字符串最小字母出现频次 - 力扣(LeetCode)
code
class Solution {
public:
vector<int> numSmallerByFrequency(vector<string>& queries, vector<string>& words) {
int m1 = queries.size(), m2 = words.size();
// 计算每个字符串最小字符出现的次数
auto getCnt = [&](string s)->int{
sort(s.begin(), s.end());// 升序
int cnt = count(s.begin(), s.end(), s[0]);
return cnt;
};
vector<int> ans; vector<int> words_cnt;
for(string word : words){
int cnt = getCnt(word);
words_cnt.emplace_back(cnt);
}
sort(words_cnt.begin(), words_cnt.end());
for(string query : queries){
int cnt = getCnt(query);
int pos = upper_bound(words_cnt.begin(), words_cnt.end(), cnt) - words_cnt.begin();
ans.emplace_back(m2 - pos);
// 可优化成一句话
// ans.emplace_back(m2 - (upper_bound(words_cnt.begin(), words_cnt.end(), getCnt(query)) - words_cnt.begin()));
}
return ans;
}
};