ধরুন আমরা একটি স্ট্রিং s আছে. আমাদের এই স্ট্রিংটিকে Run length এনকোডিং ফর্মে কম্প্রেস করতে হবে। সুতরাং যখন একটি অক্ষর পরপর k সংখ্যার পুনরাবৃত্তি হয় যেমন 'bbbb' এখানে 'b' অক্ষরটি পরপর চারবার পুনরাবৃত্তি হয়, তাই এনকোড করা ফর্মটি হবে 'b4'। একক অক্ষরের জন্য আমরা এতে গণনা যোগ করব না।
সুতরাং, যদি ইনপুটটি s ="abbbaaaaaccdaaab" এর মত হয়, তাহলে আউটপুট হবে ab3a6c2da3b
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- res :=ফাঁকা স্ট্রিং
- cnt :=1
- এর জন্য 1 থেকে s - 1 এর আকারের মধ্যে, কর
- যদি s[i - 1] s[i] এর মত হয়, তাহলে
- cnt :=cnt + 1
- অন্যথায়,
- res :=res concatenate s[i - 1]
- যদি cnt> 1, তারপর
- res :=res concatenate cnt
- cnt :=1
- যদি s[i - 1] s[i] এর মত হয়, তাহলে
- res :=res + s এর শেষ অক্ষর
- যদি cnt> 1, তারপর
- res :=res concatenate cnt
- রিটার্ন রিটার্ন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(s): res = "" cnt = 1 for i in range(1, len(s)): if s[i - 1] == s[i]: cnt += 1 else: res = res + s[i - 1] if cnt > 1: res += str(cnt) cnt = 1 res = res + s[-1] if cnt > 1: res += str(cnt) return res s = "abbbaaaaaaccdaaab" print(solve(s))
ইনপুট
"abbbaaaaaaccdaaab"
আউটপুট
ab3a6c2da3b