সমস্যা বিবরণ
একটি স্ট্রিং দেওয়া আছে। কনসিকিউটিভ রিপিটিং ক্যারেক্টার কাউন্ট করে "কাউন্ট + ক্যারেক্টার" ফরম্যাটে কমপ্রেস করতে হবে।
ইনপুট: 'aabbcde' → আউটপুট: '2a2b1c1d1e'
সমাধান
const str = 'aabbcde';
const repeatLetter = (str = '') => {
const strArr = str.split("").sort();
let count = 1;
let i = 1;
let res = '';
while (i < strArr.length) {
if (strArr[i - 1] === strArr[i]) {
count++;
} else {
res += count + strArr[i - 1];
count = 1;
}
i++;
}
res += count + strArr[i - 1];
return res;
};
console.log(repeatLetter(str));
আউটপুট
2a2b1c1d1e
গুরুত্বপূর্ণ নোট
এই কোডটি স্ট্রিং সর্ট করে (split("").sort()), তাই আউটপুট অ্যালফাবেটিক্যালি অর্ডার্ড হয়। আসল স্ট্রিংয়ের অর্ডার মেইনটেইন করতে চাইলে sort() বাদ দিন।
অর্ডার মেইনটেইন করে ভার্সন
const repeatLetterOrdered = (str = '') => {
let res = '', count = 1;
for (let i = 1; i <= str.length; i++) {
if (str[i] === str[i-1]) count++;
else { res += count + str[i-1]; count = 1; }
}
return res;
};