根据字符出现频率排序

给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 。一个字符出现的 频率 是它出现在字符串中的次数。
返回 已排序的字符串 。如果有多个答案,返回其中任何一个。

  • 输入: s = “tree”

  • 输出: “eert”
    解释: ‘e’出现两次,’r’和’t’都只出现一次。
    因此’e’必须出现在’r’和’t’之前。此外,”eetr”也是一个有效的答案。

  • 输入: s = “cccaaa”

  • 输出: “cccaaa”
    解释: ‘c’和’a’都出现三次。此外,”aaaccc”也是有效的答案。
    注意”cacaca”是不正确的,因为相同的字母必须放在一起。

1
2
3
4
5
6
7
8
9
10
11
12
13
var frequencySort = function(s) {
const map = new Map()

for(let i = 0;i < s.length;i++) {
if(map.has(s[i])) {
map.set(s[i], s[i]+map.get(s[i]))
}else {
map.set(s[i],s[i])
}
}

return Array.from(map.values()).sort((a,b) => b.length - a.length).join('')
};