根据字符出现频率排序-中等
难度:中等
题目描述:
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
示例:
输入:
"tree"
输出:
"eert"
解释:
'e'出现两次,'r'和't'都只出现一次。
因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。
解题思路
哈希表
var frequencySort = function (s) {
let map = new Map();
let x = [];
let str = "";
for (let i = 0; i < s.length; i++) {
if (map.has(s[i])) {
map.set(s[i], map.get(s[i]) + 1);
} else {
map.set(s[i], 1);
}
}
for (let key of map.keys()) {
x.push(key);
}
x.sort((a, b) => map.get(b) - map.get(a));
for (let i = 0; i < x.length; i++) {
for (let j = 0; j < map.get(x[i]); j++) {
str += x[i];
}
}
return str;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22