思路:
将map直接放入vector<pair<string,int>>中,然后利用vector这种线性结构的比较器比较。
代码
//排序函数
bool cmp(const pair<char,int> &lhs, const pair<char,int>& rhs) {
if(lhs.second==rhs.second)
return lhs.first < rhs.first;
else
return lhs.second>rhs.second;
}
class Solution {
public:
string frequencySort(string s) {
map<char,int> cmap;
//字符串存入map
for(int i=0;i<s.size();i++){
cmap[s[i]]+=1;
}
//map存入vector中
vector<pair<char,int>> vct(cmap.begin(),cmap.end());
sort(vct.begin(),vct.end(),cmp);
string res="";
//结果拼凑
for(int i=0;i<vct.size();i++)
{
for(int j=0;j<vct[i].second;j++){
res+=vct[i].first;
}
}
return res;
}
};