思想:利用map保存字符和出现的次数,然后遍历map得出出现次数从大到小的字符,并且按照出现次数来连接生成新的字符串
class Solution {
public:
string frequencySort(string s) {
string res;
map<char,int>m;
int length = s.length();
//利用map保存字符出现的次数
for(int i = 0;i < length;i++){
m[s[i]]++;
}
//如果map不为空
while(!m.empty()){
//pos来找到出现最多次数的字符
map<char,int>::iterator pos = m.begin();
//遍历map
for(map<char,int>::iterator it = m.begin();it!=m.end();it++)
{
if(it->second > pos->second) pos = it;
}
//字符串中res.size()处插入pos->second个pos->first字符
res.insert(res.size(),pos->second,pos->first);
//在map中去除当前出现最多次数的字符
m.erase(pos);
}
return res;
}
};