451.根据字符出现频率排序
var frequencySort = function (s) {
let map = new Map()
for (let i = 0; i < s.length; i++) {
let char = s.charAt(i)
if (map.has(char)) {
map.set(char, map.get(char) + 1)
} else {
map.set(char, 1)
}
}
console.log(map)
const arr = Array.from(map)
arr.sort((a, b) => b[1] - a[1])
let res = ''
for (let i = 0; i < arr.length; i++) {
let [char, count] = arr[i]
for (let j = 0; j < count; j++) {
res += char
}
}
return res
};
var frequencySort = function (s) {
let map = new Map()
let maxFreq = 0
for (let i = 0; i < s.length; i++) {
let char = s.charAt(i)
let freq = map.get(char) || 0
freq = freq + 1
map.set(char, freq)
maxFreq = Math.max(maxFreq, freq)
}
const buckets = new Array(maxFreq + 1).fill(0).map(() => [])
for (let [char, freq] of map) {
buckets[freq].push(char)
}
console.log(buckets)
let res = []
for (let freq = maxFreq; freq >= 1; freq--) {
let chars = buckets[freq]
for (let i = 0; i < chars.length; i++) {
let char = chars[i]
for (let j = 0; j < freq; j++) {
res += char
}
}
}
return res
}
console.log(frequencySort('tree'))