--- title: LC-451 description: Sort Characters By Frequency --- ## Examples | Input | Output | | ---------- | -------- | | `"tree"` | `"eert"` | | `"cccaaa"` | `"aaaccc"` | | `"Aabb"` | `"bbAa"` | ## Hints Constraints: • `1 <= s.length <= 5 * 10^5` • `s` consists of uppercase and lowercase English letters and digits. Given a string `s`, sort it in decreasing order based on the frequency of the characters. The frequency of a character is the number of times it appears in the string. Return the sorted string. If there are multiple answers, return any of them. ## Solution ```js /** * @param {string} s * @return {string} */ var frequencySort = function (s) { // Default for Hammer const freq = {}; for (let c of s) freq[c] = (freq[c] || 0) + 1; // Problem Specific // Sort characters by descending frequency; same chars stay grouped return s .split("") .sort((a, b) => freq[b] - freq[a] || a.localeCompare(b)) .join(""); }; ```