按頻率對 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP