Here I found one interesting question from Hacker Rank, So Let's dig into question and write code....

Question you can see Here

Note: Read the question and try to understand and solve it.

Here we'll see two different ways to solve it..

#### Method 1:

**Iterative Method:**

# for ex. s = "91011"

def separateNumbers(s):

res = 'NO'

for i in range(len(s)):

#i = 0 , starting digit = 9

starting_digit = int(s[ : i + 1])

new_s = str(starting_digit)

#len(new_s) = 1 , len(s)=8 ,not same

if len(new_s) != len(s):

digit = starting_digit

while len(new_s) < len(s):

# digit = 9

digit += 1 # digit = 10

new_s += str(digit) # new_s = "910" (10 concatenet)

# loop break when len(new_s) >= len(s)

# after loop breaks new_s = "91011"

if new_s == s:

res = f"YES {starting_digit}"

break

print(res)

#### Method 2:

**Recursive Method:**

import re

def separateNumbers(s):

for i in range(0, len(s)//2):

if checkComply(s[0:i+1], s[i+1:]):

print(f'YES {s[0:i+1]}')

return

print('NO')

# for checking if there are two continues number's difference is = 1

def checkComply(p1, p2):

# next expected number = next_num

next_num = str(int(p1) + 1)

# match patter with p2

match = re.match(next_num, p2)

if match:

# replace next_num in p2 with ""(only first occurence)

p2_new = p2.replace(next_num, '', 1)

# recursion till len(p2_new == 0)or match == None

if len(p2_new) == 0:

return True

return checkComply(next_num, p2_new)

else:

return False

Note: If You've any other solution then share with us in comment box.

Thank You ðŸ˜ŠðŸ˜Š

GitHub |

__Other Important Post__

- Learn Singly Linked List
- Learn Doubly Linked List
- Create Hangman Game using Python
- Create Rock Paper Scissor Game using Tkinter

## Comments

## Post a Comment