Chúng ta cần viết hàm JavaScript nhận vào chuỗi có ký tự lặp lại và số n, trả về chuỗi mới mà các ký tự giống nhau cách nhau đúng n vị trí. Số n phải nhỏ hơn độ dài chuỗi.
Ví dụ: "accessories", n=3 → "secrsecisao" (có thể có hoán vị khác).
Dưới đây là mã:
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));Kết quả
Đầu ra trong console sẽ là:
sceasceosri bab acbacb