ধরুন আমরা একটি স্ট্রিং s আছে. আমাদের রান-লেংথ এনকোডিং কৌশল ব্যবহার করে এটি এনকোড করতে হবে। আমরা জানি, রান-লেংথ এনকোডিং হল স্ট্রিং এনকোডিং করার একটি দ্রুত এবং সহজ পদ্ধতি। ধারণাটি নিম্নরূপ - একটি একক গণনা এবং অক্ষর হিসাবে পুনরাবৃত্তিমূলক উপাদান (অক্ষর)।
সুতরাং, যদি ইনপুট s ="BBBBAAADDCBB" এর মত হয়, তাহলে আউটপুট হবে "4B3A2D1C2B"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- res :=ফাঁকা স্ট্রিং
- tmp :=s এর প্রথম অক্ষর
- গণনা :=1
- 1 থেকে s আকারের রেঞ্জের জন্য, করুন
- যদি s[i] tmp এর মত না হয়, তাহলে
- res :=res concatenate count concatenate tmp
- tmp :=s[i]
- গণনা :=1
- অন্যথায়,
- গণনা :=গণনা + 1
- যদি s[i] tmp এর মত না হয়, তাহলে
- রিটার্ন res concatenate কাউন্ট concatenate tmp
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, s): res = "" tmp = s[0] count = 1 for i in range(1,len(s)): if s[i] != tmp: res += str(count) + tmp tmp = s[i] count = 1 else: count += 1 return res + str(count) + tmp ob = Solution() print(ob.solve("BBBBAAADDCBB"))
ইনপুট
"BBBBAAADDCBB"
আউটপুট
4B3A2D1C2B