मान लीजिए कि हमारे पास एक संख्या 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 है, तो हमें nवाँ पद उत्पन्न करना होगा। इसे हल करने के लिए, हम इस दृष्टिकोण का पालन करेंगे -
- सेट सेट :="1"
- अगर n =1 है, तो s वापस करें
- i के लिए:=2 से n + 1
- j :=0
- अस्थायी:=खाली स्ट्रिंग
- curr =खाली स्ट्रिंग और गिनती:=0
- जबकि j
- अगर curr खाली स्ट्रिंग है, तो
- curr :=s[j], गिनें :=1 और j को 1 से बढ़ाएं
- अन्यथा अगर curr s[j] है, तो
- गिनती और j 1 बढ़ाएँ
- अन्यथा:
- अस्थायी:=अस्थायी + स्ट्रिंग के रूप में गिनती + curr
- curr =खाली स्ट्रिंग
- गिनती :=0
- अगर curr खाली स्ट्रिंग है, तो
- अस्थायी:=अस्थायी + स्ट्रिंग के रूप में गिनती + 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"