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

จัดเรียงสตริงใหม่ให้ตัวอักษรเดียวกันห่างกัน n ตำแหน่งใน JavaScript


เราต้องเขียนฟังก์ชัน JavaScript ที่รับสตริงที่มีตัวอักษรซ้ำ และคืนค่าสตริงใหม่ที่ตัวอักษรเดียวกันทั้งหมดห่างกัน n ตัวอักษรพอดี และ n ต้องน้อยกว่าความยาวอาร์เรย์

เช่น

ถ้าสตริงอินพุทคือ: "accessories" และ n คือ 3 ค่าที่คืนควรเป็น: "secrsecisao"

หมายเหตุ - อาจมีวิธีจัดเรียงอื่นที่ได้ผลลัพธ์ที่ต้องการ ลำดับไม่สำคัญ ตราบใดที่ตรรกะถูกต้อง ผลลัพธ์ก็ถูกต้อง

มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน

ตัวอย่าง

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

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้

sceasceosri bab acbacb