আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি স্ট্রিং গ্রহণ করবে যেটে কিছু liên tục রিপিটিং (repeating) ক্যারেক্টার থাকতে পারে।
ফাংশনটি স্ট্রিংকে নিচের মতো কম্প্রেস করবে —
'wwwaabbbb' -> 'w3a2b4' 'kkkkj' -> 'k4j'
এবং যদি কম্প্রেসড স্ট্রিংয়ের দৈর্ঘ্য মূল স্ট্রিংয়ের চেয়ে বড় বা সমান হয়, তবে মূল স্ট্রিংটি রিটার্ন করবে।
উদাহরণস্বরূপ —
'aab' কে 'a2b1' এ কম্প্রেস করা যায় কিন্তু দৈর্ঘ্য ৪ হয়ে যায় যা মূল স্ট্রিংয়ের চেয়ে বড়, তাই ফাংশনটি '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