हमें एक JavaScript फ़ंक्शन लिखना है जो एक स्ट्रिंग लेता है जिसमें कुछ लगातार दोहराव वाले वर्ण हो सकते हैं।
फ़ंक्शन को स्ट्रिंग को इस तरह संपीड़ित करना चाहिए:
'wwwaabbbb' -> 'w3a2b4' 'kkkkj' -> 'k4j'
और यदि संपीड़ित स्ट्रिंग की लंबाई मूल स्ट्रिंग से अधिक या बराबर है तो हमें मूल स्ट्रिंग लौटानी चाहिए।
उदाहरण के लिए:
'aab' को 'a2b1' में संपीड़ित किया जा सकता है लेकिन यह इसकी लंबाई को 4 तक बढ़ा देता है इसलिए हमारे फ़ंक्शन को 'aab' लौटाना चाहिए
उदाहरण
const str1 = 'wwwaabbbb';
const str2 = 'kkkkj';
const str3 = 'aab';
const compressString = (str = '') => {
let res = '';
let count = 1;
for(let i = 0; i < str.length; i++){
let cur = str[i];
let next = str[i + 1];
if(cur === next){
count++;
}else{
res += cur + String(count);
count = 1;
};
}
return res.length < str.length ? res : str;
};
console.log(compressString(str1));
console.log(compressString(str2));
console.log(compressString(str3));
आउटपुट
3a2b4 k4j1 aab