Problem Definition
Create a Python program to reverse a number in Python.
Solution
This article will show multiple solutions for reversing a number in Python.
Reversing a number mathematically
The algorithm below is used to reverse a number mathematically with time complexity of O(log n) where n is input number.
Algorithm
Input :
num
(1) Initialize
rev_num = 0
(2) Loop while
num > 0
- (a) Multiply
rev_num
by 10 and add remainder of num divide by 10 torev_num
- (b) Divide num by 10
(3) Return
rev_num
Program
num = 12345
rev_num = 0
while num != 0:
rev_num = rev_num * 10
rev_num = rev_num + (num%10)
num = num // 10
print(rev_num)
Output
54321
Using reversed() method
Python's built in reversed()
method returns an iterator that accesses the given sequence in the reverse order.
Program
# input
num = 1234
rev_iterator = reversed(str(num))
rev_num = "".join(rev_iterator)
print(rev_num)
Output
4321
Note that the reversed()
method doesn't accept integer as a parameter therefore data type is converted to a string.
Since reversed()
returns an iterator we need to join it before printing it out.
Using slicing
Python string supports slicing to create substring.
str_object[start_pos:end_pos:step]
The slicing starts with the start_pos
index (included) and ends at the end_pos
index (excluded). The step parameter is used to specify the steps to take from the start to end index.
Program
num = 123
rev_num = str(num)[::-1]
print(rev_num)
Output
321
Since slicing work on a string we need to convert the number to a string, then create a slice that starts with the length of the string, and ends at index 0 with a step of -1.
Suggested read: