-
Notifications
You must be signed in to change notification settings - Fork 0
/
reverseInteger.py
82 lines (74 loc) · 1.72 KB
/
reverseInteger.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#Source : https://leetcode.com/problems/reverse-integer/
#Author : Yuan Wang
#Date : 2018-07-05
'''
**********************************************************************************
*Given a 32-bit signed integer, reverse digits of an integer.
*
*Example 1:
*
*Input: 123
*Output: 321
*Example 2:
*
*Input: -123
*Output: -321
*Example 3:
*
*Input: 120
*Output: 21
*Note:
*Assume we are dealing with an environment which could only store integers within
*the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem,
*assume that your function returns 0 when the reversed integer overflows.
**********************************************************************************/
'''
#More pythonic solution
def reverse(self, x: int) -> int:
r = x // max(1,abs(x)) * int(str(abs(x))[::-1])
return r if r.bit_length() < 32 or r == -2 ** 31 else 0
#Pythonic solution
def reverseIntegerA(x):
"""
:type x: int
:rtype: int
"""
n=str(x)
if x >= 0:
result=int(n[::-1])
return 0 if result > pow(2,31)-1 else result
else:
result=int("-"+n[1:][::-1])
return 0 if result < -pow(2,31) else result
#Self solution
def reverseIntegerB(x):
"""
:type x: int
:rtype: int
"""
if x == 0:
return 0
n=str(x)
start=False
if x> 0:
result=""
for i in range(len(n)-1,-1,-1):
if n[i] != "0":
result+=n[i]
start=True
elif n[i] == "0" and start == True:
result+=n[i]
result=int(result)
return 0 if result > pow(2,31)-1 else result
else:
result="-"
for i in range(len(n)-1,0,-1):
if n[i] != "0":
result+=n[i]
start=True
elif n[i] == "0" and start == True:
result+=n[i]
result=int(result)
return 0 if result < -pow(2,31) else result
x=-12345
print(reverseIntegerB(x))