按频率对 JavaScript 中的字符串字符进行排序


难题

我们需要编写一个 JavaScript 函数,它只接收一个字符字符串作为唯一参数。

我们的函数应该根据原始字符串准备一个新字符串,其中出现次数最多的字符首先出现,然后是出现频率递减的字符。

例如,如果函数的输入是 -

const str = 'free';

那么输出应该是 -

const output = 'eefr';

输出解释

由于 e 出现两次,因此它首先出现,其次是 r 和 f。

Learn JavaScript in-depth with real-world projects through our JavaScript certification course. Enroll and become a certified expert to boost your career.

示例

代码如下 -

 直播演示

const str = 'free';
const frequencySort = (str = '') => {
   let map = {}
   for (const letter of str) {
      map[letter] = (map[letter] || 0) + 1;
   };
   let res = "";
   let sorted = Object.keys(map).sort((a, b) => map[b] - map[a])
   for (let letter of sorted) {
      for (let count = 0; count < map[letter]; count++) {
         res += letter
      }
   }
   return res;
};
console.log(frequencySort(str));

代码说明

我们采取的步骤 -

  • 首先,我们准备了一个字母计数哈希表

  • 然后,我们根据字母计数对地图进行排序

  • 最后,我们根据排序后的字母生成了 res 字符串

输出

在控制台中的输出为 -

eefr

更新于:18-Mar-2021

677 次浏览

开启您的职业生涯

完成课程获得认证

开始
广告