Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Sắp xếp ký tự chuỗi theo tần suất trong JavaScript


Vấn đề

Cần viết hàm JS nhận chuỗi, trả về chuỗi mới sắp xếp ký tự theo tần suất giảm dần (ký tự xuất hiện nhiều nhất đứng trước).

Ví dụ:

const str = 'free';

Kết quả:

const output = 'eefr';

Giải thích:

'e' xuất hiện 2 lần -> đứng trước, sau đó 'r' và 'f'.

Ví dụ

Mã thực hiện:

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));

Giải thích code:

Các bước:

  • Tạo hashmap đếm tần suất ký tự.

  • Sắp xếp khóa theo tần suất giảm dần.

  • Xây dựng chuỗi kết quả từ ký tự đã sắp xếp.

Kết quả

Kết quả in ra console:

eefr