解题思路:
(1)排序,双指针
class Solution {
private:
int count=0;
public:
int helper(string &s) {
map<char,int> mp;
for(int i=0;i<s.length();i++) {
mp[s[i]]++;
}
return mp.begin()->second;
}
vector<int> numSmallerByFrequency(vector<string>& queries, vector<string>& words) {
vector<int> v(queries.size(),0),v2;
vector<pair<int,int>> v1;
for(int i=0;i<queries.size();i++) {
v1.push_back({helper(queries[i]),i});
}
for(int i=0;i<words.size();i++) {
v2.push_back(helper(words[i]));
}
auto comp=[&](const pair<int,int> &a,const pair<int,int> &b){
if(a.first<b.first) return true;
else return false;
};
sort(v1.begin(),v1.end(),comp);
sort(v2.begin(),v2.end());
int i=0,j=0;
while(i<v1.size() && j<v2.size()) {
if(v1[i].first<v2[j]) {
count=v2.size()-j;
v[v1[i].second]=count;
i++;
} else j++;
}
return v;
}
};