Suppose we have a string s with some digits, we have to check whether it contains consecutively descending integers or not.
So, if the input is like s = "99989796", then the output will be True, as this string is holding [99,98,97,96]
To solve this, we will follow these steps−
Define a function helper() . This will take pos, prev_num
if pos is same as n, then
return True
num_digits := digit count of prev_num
for i in range num_digits - 1 to num_digits, do
if s[from index pos to pos+i-1] and numeric form of s[from index pos to pos+i-1]) is same as prev_num - 1, then
if helper(pos + i, prev_num - 1), then
return True
return False
From the main method, do the following−
n := size of s
for i in range 1 to quotient of n/2, do
num := numeric form of s[from index 0 to i-1]
if helper(i, num) is true, then
return True
return False
Let us see the following implementation to get better understanding −
Example
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))
Input
"99989796"
Output
True