समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो वर्णों की एक स्ट्रिंग लेता है, 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