Skip to content

Commit 720d45b

Browse files
committed
revers numbers
1 parent aa36a70 commit 720d45b

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

revers_int.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Learn Python together
2+
"""Given a signed 32-bit integer x, return x with its digits reversed.
3+
If reversing x causes the value to go outside the signed 32-bit integer
4+
range [-231, 231 - 1], then return 0."""
5+
6+
# Solution 1 for 32-bit integers
7+
def reverse_number(x):
8+
pos = 1
9+
if x < 0:
10+
# negating the input number if its negative and store in pos
11+
pos = -1
12+
x = -x
13+
# converting number to str and reverse it
14+
reverse = int(str(x)[::-1])
15+
# return reverse if its 32 bit integer
16+
return pos * reverse if reverse <= 2**31 - 1 else 0
17+
18+
# check
19+
print(reverse_number(321)) # -> 123
20+
print(reverse_number(-567)) # -> -765
21+
print(reverse_number(2585645646453)) # -> 0
22+
print(reverse_number(-2585645646453)) # -> 0
23+
24+
# Solution 2 for 64-bit integers
25+
def reverse_number2(x):
26+
# for negative inputs
27+
pos = 1
28+
if x < 0:
29+
# negating the input number if its negative and store in pos
30+
pos = -1
31+
x = -x
32+
reverse = 0
33+
# use a while loop for interation
34+
while x > 0:
35+
# getting last digit of x
36+
pop = x % 10
37+
# use floor division for droping last digit
38+
x //= 10
39+
# multipe the previous reversed digits by 10 and add th current digit
40+
reverse = reverse * 10 + pop
41+
# return multiplied reversed num by pos
42+
return reverse * pos
43+
# check
44+
print(reverse_number2(321)) # -> 123
45+
print(reverse_number2(-567)) # -> -765
46+
print(reverse_number2(2585645646453)) # -> 3546465465852
47+
print(reverse_number2(-2585645646453)) # -> -3546465465852
48+
49+
50+
51+
52+
53+

0 commit comments

Comments
 (0)