সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি স্ট্রিং অক্ষর, str, প্রথম আর্গুমেন্ট হিসাবে নেয় এবং একটি সংখ্যা, num, (num <<স্ট্রিং str এর দৈর্ঘ্য) দ্বিতীয় আর্গুমেন্ট হিসাবে।
ফাংশনটি স্ট্রিং স্ট্র-এর অক্ষরগুলিকে পুনর্বিন্যাস করতে হবে এবং একটি নতুন স্ট্রিং তৈরি করতে হবে যাতে কোনও দুটি অনুরূপ অক্ষর সংখ্যা অক্ষরের চেয়ে কম না হয়, অন্য কথায় অনুরূপ অক্ষরগুলি অন্তত সংখ্যা অক্ষরের দূরত্বে হওয়া উচিত৷
ফাংশন তারপর অবশেষে নতুন নির্মিত স্ট্রিং ফেরত দেওয়া উচিত. এবং যদি এই বিন্যাসটি অর্জন করা সম্ভব না হয়, তাহলে আমাদের ফাংশনটি একটি খালি স্ট্রিং ফিরিয়ে দেবে।
উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয় −
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