Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

จัดเรียงสตริงใหม่เพื่อให้อักขระเดียวกันห่างกัน n JavaScript


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

ตัวอย่างเช่น −

If the input string is: "accessories"
And the number n is 3
Then,
The return value should be: "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