
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Check if String Contains Consecutively Descending Substring in Python
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