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.
分析:在cnt数组中保存每个字母出现的次数,然后按照出现次数的顺序对字符串进行排序~
1 2 3 4 5 6 7 8 9 10 11 12 |
class Solution { public: string frequencySort(string s) { int cnt[256] = {0}; for(int i = 0; i < s.length(); i++) cnt[s[i]]++; sort(s.begin(), s.end(), [&](char a, char b) { return cnt[a] > cnt[b] || (cnt[a] == cnt[b] && a < b); }); return s; }; }; |
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼