मान लीजिए हमारे पास कुछ अंकों वाली एक स्ट्रिंग s है, हमें जांचना है कि क्या इसमें लगातार अवरोही पूर्णांक हैं या नहीं।
उदाहरण के लिए, यदि इनपुट s = "99989796" है, तो आउटपुट True होगा, क्योंकि यह स्ट्रिंग [99,98,97,96] रखती है।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- helper() फंक्शन परिभाषित करें जो pos, prev_num लेता है:
- यदि pos, n के बराबर है, तो सत्य वापस करें
- num_digits := prev_num के अंकों की संख्या
- i को num_digits-1 से num_digits तक के लिए करें:
- यदि s[pos:pos+i] और int(s[pos:pos+i]) == prev_num - 1, तो:
- यदि helper(pos+i, prev_num-1) सत्य है, तो सत्य वापस करें
- यदि s[pos:pos+i] और int(s[pos:pos+i]) == prev_num - 1, तो:
- असत्य वापस करें
- मुख्य विधि से:
- n := s का आकार
- i को 1 से n//2 तक के लिए करें:
- num := int(s[:i])
- यदि helper(i, num) सत्य है, तो सत्य वापस करें
- असत्य वापस करें
उदाहरण
class Solution:
def solve(self, s):
n = len(s)
def helper(pos, prev_num):
if pos == n:
return True
num_digits = len(str(prev_num))
for i in range(num_digits-1, num_digits+1):
if s[pos:pos+i] and int(s[pos:pos+i]) == prev_num - 1:
if helper(pos+i, prev_num-1):
return True
return False
for i in range(1, n//2 + 1):
num = int(s[:i])
if helper(i, num):
return True
return False
ob = Solution()
s = "99989796"
print(ob.solve(s))
इनपुट
"99989796"
आउटपुट
True