यहां हम काउंट एंड से अनुक्रम देखेंगे। यह एक अनुक्रम है जिसके कुछ पद नीचे हैं:
- 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वां पद उत्पन्न करना है।
हल करने के चरण
- s := "1" सेट करें
- यदि n = 1, तो s वापस करें
- i := 2 से n + 1 तक
- j := 0, temp := "", curr = "" और count := 0
- जब तक j < s की लंबाई, करें
- यदि curr "", तो curr := s[j], count := 1 और j को 1 से बढ़ाएं
- अन्यथा यदि curr s[j] है, तो count और j को 1 से बढ़ाएं
- अन्यथा temp := temp + count को स्ट्रिंग के रूप में + curr, curr = "", count := 0
- temp := temp + count को स्ट्रिंग के रूप में + curr
- s वापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
class Solution(object):
def countAndSay(self, n):
"""
:type n: int
:rtype: str
"""
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
ob1 = Solution()
print(ob1.countAndSay(6))
इनपुट
print(ob1.countAndSay(6))
आउटपुट
312211