ধরুন আমাদের কিছু সংখ্যা সহ একটি স্ট্রিং s আছে, আমাদের পরীক্ষা করতে হবে এতে ধারাবাহিকভাবে অবতরণকারী পূর্ণসংখ্যা আছে কি না।
সুতরাং, যদি ইনপুটটি s ="99989796" এর মত হয়, তাহলে আউটপুটটি True হবে, কারণ এই স্ট্রিংটি [99,98,97,96] ধরে আছে
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব−
-
একটি ফাংশন হেল্পার() সংজ্ঞায়িত করুন। এটি pos, prev_num
লাগবে -
যদি pos n এর মত হয়, তাহলে
-
রিটার্ন ট্রু
-
-
num_digits :=আগের_সংখ্যার সংখ্যা
-
num_digits - 1 থেকে num_digits রেঞ্জের জন্য, করুন
-
যদি s[index pos থেকে pos+i-1] এবং s-এর সাংখ্যিক রূপ [index pos থেকে pos+i-1]) আগের_সংখ্যা - 1 এর মতই হয়, তাহলে
-
যদি সহায়ক (pos + i, prev_num - 1), তারপর
-
রিটার্ন ট্রু
-
-
রিটার্ন ফলস
-
প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন−
-
n :=s
এর আকার -
i এর জন্য রেঞ্জ 1 থেকে n/2 এর ভাগফল, করুন
-
num :=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