ปัญหา
รับสตริง เรียงตัวอักษรตามความถี่มากไปน้อย
ตัวอย่าง
const str = 'free';
'e' 2 ครั้ง, 'f' 1, 'r' 1 → 'eefr'
โค้ดตัวอย่าง
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));
คำอธิบาย
- นับความถี่แต่ละตัวอักษร
- เรียง key ตามความถี่มากไปน้อย
- สร้างสตริงผลลัพธ์
ผลลัพธ์
eefr