力扣刷题日记-451. 根据字符出现频率排序

55 阅读1分钟

给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 。一个字符出现的 频率 是它出现在字符串中的次数。

返回 已排序的字符串 。如果有多个答案,返回其中任何一个。

来源:力扣(LeetCode) 链接:leetcode.cn/problems/so… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

  • 1.将字符串的出现的字符进行分类
  • 2.分类后按照降序排列
  • 3.组装成一个字符串
/**
 * @param {string} s
 * @return {string}
 */
var frequencySort = function(s) {
    let map = new Map();
    let ans = ''
    for (let i = 0; i < s.length; i++) {
        map.get(s[i]) ? map.set(s[i], map.get(s[i])+1) : map.set(s[i], 1)
    }
    let sArr = [...map.entries()]
    sArr.sort((a,b) => b[1] - a[1])
    for (let i = 0; i < sArr.length; i++) {
        let c = sArr[i][0]
        let num = sArr[i][1]
        ans = ans + c.repeat(num)
    }
    return ans
};