Sort Characters By Frequency
Description
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.
Solution(javascript)
const frequencySort = (s) => {
const map = {}
for (c of s) {
if (map[c]) {
map[c]++
} else {
map[c] = 1
}
}
console.log(map)
const toStr = (c, count) => {
let current = c
while (count > 1) {
current += c
count--
}
return current
}
return Object.keys(map)
.sort((keyA, keyB) => map[keyB] - map[keyA])
.map(key => toStr(key, map[key]))
.join('')
}