Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

เรียงตัวอักษรในสตริงตามความถี่ (Frequency Sort) ใน JavaScript

ปัญหา

รับสตริง เรียงตัวอักษรตามความถี่มากไปน้อย

ตัวอย่าง

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