मान लीजिए कि हमारे पास कुछ अंकों के साथ एक स्ट्रिंग है, हमें यह जांचना होगा कि इसमें लगातार अवरोही पूर्णांक हैं या नहीं।
इसलिए, यदि इनपुट s ="99989796" जैसा है, तो आउटपुट सही होगा, क्योंकि यह स्ट्रिंग [99,98,97,96]
धारण कर रही हैइसे हल करने के लिए, हम इन चरणों का पालन करेंगे-
-
एक फ़ंक्शन हेल्पर() को परिभाषित करें। यह स्थिति लेगा, prev_num
-
अगर पॉज़ n के समान है, तो
-
सही लौटें
-
-
num_digits :=prev_num की अंकों की संख्या
-
मेरे लिए num_digits - 1 से num_digits की सीमा में, करें
-
यदि s[सूचकांक pos से pos+i-1] और s का सांख्यिक रूप [index pos से pos+i-1] तक) prev_num-1 के समान है, तो
-
अगर हेल्पर (pos + i, prev_num -1), तो
-
सही लौटें
-
-
झूठी वापसी
-
मुख्य विधि से, निम्न कार्य करें-
-
n :=s का आकार
-
मैं के लिए 1 से n/2 के भागफल की श्रेणी में, करें
-
संख्या :=s का सांख्यिक रूप [सूचकांक 0 से i-1 तक]
-
अगर हेल्पर (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