हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो एक स्ट्रिंग लेता है जिसमें कुछ निरंतर दोहराए जाने वाले वर्ण हो सकते हैं।
फ़ंक्शन को स्ट्रिंग को इस तरह से कंप्रेस करना चाहिए -
'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