মনে করুন s একটি ডিজিট ধারণকারী স্ট্রিং। এতে কনsekutিভ ডিসেন্ডিং ইন্টিজার আছে কিনা যাচাই করতে হবে।
উদাহরণস্বরূপ, "99989796" হলে আউটপুট True (৯৯,৯৮,৯৭,৯৬)।
সমাধানের ধাপসমূহ
- helper(pos, prev_num) ফাংশন সংজ্ঞায়িত করুন
- যদি pos == n, True ফেরত দিন
- num_digits := prev_num-এর ডিজিট কাউন্ট
- i = num_digits-1 থেকে num_digits পর্যন্ত,
- যদি s[pos:pos+i] এবং এর মান == prev_num-1, helper(pos+i, prev_num-1) কল করুন
- False ফেরত দিন
- মূল মেথড থেকে: n := len(s), i = 1 থেকে n//2 পর্যন্ত, num = int(s[:i]), helper(i, num) True হলে True ফেরত দিন, শেষে False ফেরত দিন
উদাহরণ
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