按频率对 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