Given a string, sort it in decreasing order based on the frequency of characters.
Example 1:
Input:"tree"Output:"eert"Explanation:'e' appears twice while 'r' and 't' both appear once.So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer.Example 2:
Input:"cccaaa"Output:"cccaaa"Explanation:Both 'c' and 'a' appear three times, so "aaaccc" is also a valid answer.Note that "cacaca" is incorrect, as the same characters must be together.Example 3:
Input:"Aabb"Output:"bbAa"Explanation:"bbaA" is also a valid answer, but "Aabb" is incorrect.Note that 'A' and 'a' are treated as two different characters.class Solution {public: struct character{ int fre; char ch; bool Operator < (const struct character& rhs) const{ return fre > rhs.fre; } } c[256]; string frequencySort(string s) { int table[256] = {0}; string ans; for(char ch : s){ c[ch - ' '].fre++; c[ch - ' '].ch = ch; } sort(c, c + 256); for(int i = 0; i < 256; ++i){ for(int j = 0; j < c[i].fre; ++j) ans += c[i].ch; } return ans; }};新闻热点
疑难解答