Rearrange Numbers in String
Given a string, write a program to re-arrange all the numbers appearing in the string in decreasing order. Note: There will not be any negative numbers or numbers with decimal part.
Input
The input will be a single line containing a string.
Output
The output should be a single line containing the modified string with all the numbers in string re-ordered in decreasing order.
Explanation
For example, if the given string is "I am 5 years and 11 months old", the numbers are 5, 11. Your code should print the sentence after re-ordering the numbers as "I am 11 years and 5 months old".
Sample Input
I am 5 years and 11 months old
Sample Output
I am 11 years and 5 months old
def RearrangeNumbers(source):
tmp0 = list(source)
tmp1 = [c if c.isdigit() else ' ' for c in tmp0 ]
tmp2 = "".join(tmp1)
tmp3 = tmp2.split()
numbers = []
for w in tmp3:
numbers.append(int(w))
if len(numbers) < 2:
return source
numbers.sort(reverse=True)
result_string = ''
i = 0
while i < len(source):
c = source[i]
if not c.isdigit():
result_string += c
else:
result_string += str(numbers[0])
numbers = numbers[1:]
while source[i].isdigit():
i+=1
result_string += source[i]
i+=1
return result_string
print(RearrangeNumbers(input()))
Comments
this is working for this "Exam23 is Not EndBy35 tomorrow98" and I "I am 5 years and 11 months old" but it is also working for this kind of "I am -5 years and 11.0 old" when the user give as an input which containing negative or decimal then also it is accepting not accpect the decimals or negatives.
code will not satisfy , if the given string contains numbers inbetween the alphabets. For example "Exam23 is Not EndBy35 tomorrow98"
This code is not satisfying these conditions so you check it once, please *Note: There will not be any negative numbers or numbers with decimal part.
Leave a comment