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
#Sample input:
I am 28 years 9 months 11 weeks and 55 days old
#Sample output:
I am 55 years 28 months 11 weeks and 9 days old
My approach:
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:]
i+=1
i+=1
return result_string
print(RearrangeNumbers(input()))
Output:
I am 55 years 28months 11 weeks and 9 days old
But there should be space between 28months