Skip to main content

Coding Problems : Hacker Rank (Separate The Numbers)

 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

 

Comments

Popular Posts