मान लीजिए हमारे पास एक संख्या 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वां टर्म उत्पन्न करना है।
समाधान दृष्टिकोण
इसे हल करने के लिए हम इस दृष्टिकोण का पालन करेंगे:
s := "1"सेट करें- यदि
n == 1, तोsलौटाएं i := 2सेn+1तक:j := 0,temp := "",curr := "",count := 0- जब तक
j < len(s):- यदि
currखाली है:curr := s[j], count := 1, j += 1
- अन्यथा यदि
curr == s[j]:count += 1, j += 1
- अन्यथा:
temp += str(count) + currcurr := "",count := 0
- यदि
temp += str(count) + currs := temp
sलौटाएं
उदाहरण कोड
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"