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

Sắp xếp lại chuỗi để cùng một ký tự trở nên cách nhau n khoảng cách JavaScript

Chúng tôi bắt buộc phải viết một hàm JavaScript nhận vào một chuỗi có các ký tự lặp lại và trả về một chuỗi mới trong đó tất cả các ký tự giống nhau cách xa chính xác n ký tự đối với các ký tự khác. Và số phải nhỏ hơn độ dài của mảng.

Ví dụ -

If the input string is: "accessories"
And the number n is 3
Then,
The return value should be: "secrsecisao"

Lưu ý - Có thể có một số hoán vị khác để đạt được đầu ra yêu cầu, thứ tự không quan trọng, chúng ta nên bám vào logic và miễn là chúng ta hoàn thành nó, đầu ra của chúng ta là chính xác.

Hãy viết mã cho chức năng này -

Ví dụ

const str = 'accessories';
const equalDistance = (str, num) => {
   const map = str.split("").reduce((acc, val) => {
      const count = acc.get(val);
      if(typeof count === 'number'){
         acc.set(val, count+1);
      }else{
         acc.set(val, 1);
      };
      return acc;
   }, new Map());
   const arr = Array.from(map).sort((a, b) => b[1] - a[1]);
   let newString = '';
   for(let i = 0, count = 0; i < str.length;){
      if(!arr[count][1]){
         arr.splice(count, 1);
         continue;
      };
      newString += arr[count][0];
      arr[count][1]--;
      i++;
      count = i % num;
   };
   return newString;
};
console.log(equalDistance(str, 4));
console.log(equalDistance('abb', 2));
console.log(equalDistance('aacbbc', 3));

Đầu ra

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

sceasceosri
bab
acbacb