根據字符出現頻率排序
一、LeetCode題解
瞧一瞧(求star!)
- LeetCode題解Javascript版本:Gitbook版本傳送門
- LeetCode題解Javascript版本:CSDN傳送門
- 前端進階筆記:Gitbook傳送門
二、算法題
題目
給定一個字符串,請將字符串裏的字符按照出現的頻率降序排列。
示例 1:
輸入:
"tree"
輸出:
"eert"
解釋:
'e'出現兩次,'r'和't'都只出現一次。
因此'e'必須出現在'r'和't'之前。此外,"eetr"也是一個有效的答案。
解法一 (Map)
思路
- 統計字母出現的次數
- 按次數進行排序
代碼
var frequencySort = function (s) {
let index = 0;
let count = 1;
let result = '';
const map = new Map();
while (index < s.length) {
const char = s.charAt(index);
// 若已存在,則在原來的計數基礎上 +1,否則是新的字符
map.has(char) ? map.set(char, map.get(char) + 1) : map.set(char, count);
index++;
}
// 按 key - value 的 value 也就是 count 個數,以降序排列
const sortMap = [...map].sort((a, b) => b[1] - a[1]);
// 重複字符,累加:sortMap = ["字符", "個數"]
sortMap.map((item) => (result += item[0].repeat(item[1])));
return result;
};
結果
關於我
- decs: 19年畢業的前端開發一枚,沉迷Js
- E-mail: [email protected]
- 個人博客: CSDN
- GitHub: 傳送門