难度:中等。
标签:哈希表,字符串,排序,计数。
使用字典来记录字符及其个数,用结构体来存储字符及其对应的个数,最终使用sort函数对结构体vector进行排序,需要重写cmp函数。
可以用pair替代结构体。
正确解法:
class Solution {
struct charNum{
char c;
int n;
charNum(char cc, int nn){
c = cc;
n = nn;
}
};
bool static cmp(charNum c1, charNum c2){
return c1.n > c2.n;
}
public:
string frequencySort(string s) {
int len = s.length();
if(len <= 1)return s;
vector<charNum> arrs;
unordered_map<char, int> maps;
for(int i = 0; i < len; ++i){
maps[s[i]]++;
}
for(auto it = maps.begin(); it != maps.end(); ++it){
charNum temp((*it).first, (*it).second);
arrs.emplace_back(temp);
}
sort(arrs.begin(), arrs.end(), cmp);
string ans = "";
for(int i = 0; i < arrs.size(); ++i){
for(int j = 0; j < arrs[i].n; ++j){
ans.push_back(arrs[i].c);
}
}
return ans;
}
};
结果: