var frequencySort = function(s) { let map = newMap() let res = '' for(let z of s){ map.set(z,(map.get(z)||0)+1) } const arr = [...map].sort((a, b) => b[1] - a[1]) for(let [k,v] of arr){ res += k.repeat(v) } return res };
使用大顶堆
我们之前用map来存储的操作都与上方一致
排序使用大顶堆来完成
将map中的内容存入大顶堆后将大顶堆转化成数组(此时的数组已经是排好序的了)
遍历数组的内容,拿到字符串以及出现的次数
拼接字符串,输出结果
1 2 3 4 5 6 7 8 9 10 11 12 13
var frequencySort = function(s) { let map = newMap() let res = '' for(let z of s){ map.set(z,(map.get(z)||0)+1) } const maxQueue = new MaxPriorityQueue() map.forEach((val,key)=>{ maxQueue.enqueue(key,val) }) maxQueue.toArray().forEach(v=> res+= v.element.repeat(v.priority)) return res };