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
python4 anjali25
Sample Output
python25 anjali4
Sample Input
I am 2 years and 3 months old. This sentence4 5should be 6rearr7anged8.
Sample Output
I am 8 years and 7 months old. This sentence6 5should be 4rearr3anged2.
def RearrangeNumbers(source):
source += ' '
tmp0 = list(source)
tmp1 = [c if c.isdigit() else ' ' for c in tmp0 ]
tmp2 = "".join(tmp1)
tmp3 = tmp2.split()
result = 'Output string: '
numbers = []
for w in tmp3:
numbers.append(int(w))
if len(numbers) < 2:
return result + 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 + result_string
print(RearrangeNumbers(input("Input string: ")))
Comments
Leave a comment