Computer >> Máy Tính >  >> Lập trình >> Javascript

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

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy chuỗi ký tự làm đối số duy nhất.

Hàm của chúng ta nên chuẩn bị và tạo một chuỗi mới dựa trên chuỗi ban đầu, trong đó các ký tự xuất hiện trong hầu hết các số lần được đặt trước là số có tần suất giảm dần.

Ví dụ:nếu đầu vào của hàm là -

const str = 'free';

Sau đó, đầu ra phải là -

const output = 'eefr';

Giải thích đầu ra:

Vì e xuất hiện hai lần nên nó được đặt đầu tiên theo sau là r và f.

Ví dụ

Mã cho điều này sẽ là -

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 mã:

Các bước chúng tôi đã thực hiện là -

  • Đầu tiên, chúng tôi chuẩn bị một bản đồ băm số lượng chữ cái

  • Sau đó, chúng tôi sắp xếp bản đồ theo số lượng chữ cái

  • Và cuối cùng, chúng tôi đã tạo chuỗi res từ ký tự được sắp xếp

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

eefr