具体思路:
直接排序二分,会更快,感觉二分是考点;
具体代码:
class Solution {
public:
vector<int> numSmallerByFrequency(vector<string>& queries, vector<string>& words) {
vector<int>vec;
for(auto& word:words){
int num=cnt(word);
vec.push_back(num);
}
sort(vec.begin(),vec.end());
vector<int> ret;
for(auto& qu:queries){
int num=cnt(qu);
int l=0,r=vec.size()-1;
while(l<r){
int mid=l+(r-l)/2;
if(vec[mid]<=num)
l=mid+1;
else
r=mid;
}
int temp=vec.size()-l;
if(vec[l]<=num)
temp--;
ret.push_back(temp);
}
return ret;
}
int cnt(string& str){
int cnt=0;
char cz='z';
for(auto ch:str){
if(cz==ch){
cnt++;
continue;
}
if(cz>ch){
cz=ch;
cnt=1;
}
}
return cnt;
}
};