按頻率對 JavaScript 中的字串字元進行排序


難題

我們需要編寫一個 JavaScript 函式,它只接收一個字元字串作為唯一引數。

我們的函式應該根據原始字串準備一個新字串,其中出現次數最多的字元首先出現,然後是出現頻率遞減的字元。

例如,如果函式的輸入是 -

const str = 'free';

那麼輸出應該是 -

const output = 'eefr';

輸出解釋

由於 e 出現兩次,因此它首先出現,其次是 r 和 f。

示例

程式碼如下 -

 直播演示

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 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.