0007. Reverse Integer
Easy | Math | 16 ms (88.67%), 13.3 MB (90.96%)
Source: LeetCode - Reverse Integer GitHub: Solution / Performance
Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.
Assume the environment does not allow you to store 64-bit integers (signed or unsigned).
Constraints:
-2^31 <= x <= 2^31 - 1
Input: x = 123
Output: 321
Input: x = -123
Output: -321
Input: x = 120
Output: 21
Input: x = 0
Output: 0class Solution:
def reverse(self, x: int) -> int:
# (base case)
if x == 0: return x
# ==================================================
# Math =
# ==================================================
# time : O(log(n))
# space : O(1)
ans = 0
sign = 1 if x > 0 else -1
x = abs(x)
while x:
pop = x % 10
x //= 10
ans = ans*10 + pop
if ans >= 2**31-1: return 0
return sign * ansclass Solution {
/**
* @time : O(log(n))
* @space : O(1)
*/
public int reverse(int x) {
if( x == 0 ) return x;
int ans = 0;
while( x != 0 ){
int pop = x % 10;
x /= 10;
if( ans > Integer.MAX_VALUE/10 || ( ans == Integer.MAX_VALUE / 10 && pop > 7 ) ) return 0;
if( ans < Integer.MIN_VALUE/10 || ( ans == Integer.MIN_VALUE / 10 && pop < -8 ) ) return 0;
ans = ans*10 + pop;
}
return ans;
}
}Last updated
Was this helpful?