ধরুন আমাদের একটি সংখ্যা আছে n আমাদের "দেখুন এবং বলুন" ক্রমটিতে nম পদ তৈরি করতে হবে। এটি একটি ক্রম যার কয়েকটি পদ নিচের মত -
- 1
- 11
- 21
- 1211
- 111221
স্ট্রিংটি এভাবে পড়া হবে
- 1 (এক)
- 11 (এক 1) তাই আগের 1টি পড়ুন এবং বলুন “এক 1”
- 21 (দুই 1) তাই আগের 11টি পড়ুন এবং বলুন “দুই 1”
- 1211 (এক 2 এক 1) তাই আগের 21টি পড়ুন এবং বলুন "এক 2 এক 1"
- 111221 (এক 1 এক 2 দুই 1) তাই আগের 1211 পড়ুন এবং বলুন "এক 1 এক 2 দুই 1"
ধরুন আমাদের একটি সংখ্যা আছে n, 1 <=n <=30, তাহলে আমাদের nth টার্ম তৈরি করতে হবে। এটি সমাধান করার জন্য, আমরা এই পদ্ধতি অনুসরণ করব −
- সেট s :=“1”
- যদি n =1 হয়, তাহলে s ফেরত দিন
- এর জন্য i :=2 থেকে n + 1
- j :=0
- temp :=খালি স্ট্রিং
- curr =খালি স্ট্রিং এবং গণনা :=0
- যখন j
- যদি curr খালি স্ট্রিং হয়, তাহলে
- curr :=s[j], গণনা :=1 এবং j 1 দ্বারা বাড়ান
- অন্যথায় যদি curr s[j] হয়, তাহলে
- গণনা বাড়ান এবং j 1 বাড়ান
- অন্যথায়:
- temp :=temp + স্ট্রিং + curr হিসাবে গণনা করুন
- curr =খালি স্ট্রিং
- গণনা :=0
- যদি curr খালি স্ট্রিং হয়, তাহলে
- temp :=temp + স্ট্রিং + curr হিসাবে গণনা করুন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution(object): def solve(self, n): s = "1" if n == 1: return s for i in range(2,n+1): j = 0 temp = "" curr = "" count = 0 while j <len(s): if curr =="": curr=s[j] count=1 j+=1 elif curr == s[j]: count+=1 j+=1 else: temp+= str(count) + curr curr="" count = 0 temp+=str(count) + curr s=temp return s ob = Solution() n = 5 print(ob.solve(n))
ইনপুট
5
আউটপুট
"111221"