ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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