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?