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

การวางอักขระสตริงเดียวกันแยกจากกันใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับสตริงของอักขระ str เป็นอาร์กิวเมนต์แรกและตัวเลข num (num <

ฟังก์ชันควรจัดเรียงอักขระของสตริง str ใหม่ และสร้างสตริงใหม่ โดยไม่ให้อักขระที่คล้ายกันสองตัวห่างกันน้อยกว่า num อักขระ หรืออีกนัยหนึ่ง อักขระที่คล้ายกันควรมีระยะห่างอย่างน้อย num อักขระ

ฟังก์ชันควรส่งคืนสตริงที่สร้างขึ้นใหม่ในที่สุด และหากไม่สามารถบรรลุข้อตกลงนี้ได้ ฟังก์ชันของเราควรส่งคืนสตริงว่าง

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

const str = 'kkllmm';

จากนั้นผลลัพธ์ควรเป็น −

const output = 'mlmklk';

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const str = 'kkllmm';
const placeApart = (str = '') => {
   const map = {};
   for(let i=0; i<str.length; i++){
      map[str[i]] = map[str[i]] || 0;
      map[str[i]] ++;
   }
   let keys = Object.keys(map).sort((a,b)=>{
      if(map[a]<map[b])
      return 1;
      return -1;
   });
   let len = str.length%2 ? (Math.floor(str.length/2)+1) : str.length/2;
   if(map[keys[0]] > len){
      return "";
   };
   const res = [];
   let index = 0, max = str.length-1;
   while(keys.length){
      let currKey = keys.shift();
      let count = map[currKey];
      while(count){
         res[index] = currKey;
         index = index+2;
         if(index>max)
            index=1;
            count--;
      }
   }
   return res.join("");
};
console.log(placeApart(str));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

mlmklk