In this Leetcode Reverse Integer problem solution we have 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.

Leetcode Reverse Integer problem solution


Problem solution in Python.

def reverse(x):
    sign = -1 if x<0 else 1
    res, x = 0, abs(x)
    while x:
        res = res*10 + (x%10)
        x /= 10
    # handle the overflow bound
    if res > 2**31+1 or res < -2**31-1:
        return 0
    return res*sign



Problem solution in Java.

public int reverse(int x) {
        boolean neg = false;
        if(x<0){
            neg = true;
            x = -x;
        }
        long ans = 0;
        int maxPow = (int)Math.log10(x);
        while(x>0){
            ans+= (x%10 * Math.pow(10,maxPow--));
            x=x/10;
        }
        if(ans > Integer.MAX_VALUE){
            return 0;
        }
        if(neg){
            return (int)(-ans);
        }else{
           return (int) ans;
        }
    }


Problem solution in C++.

public:
    int reverse(int x) { 
        long res = 0;
        while (x != 0) {
            res = 10 * res + x % 10;
            x /= 10;
        }
        return (res > INT_MAX || res < INT_MIN) ? 0 : res;
    }
};


Problem solution in C.

int reverse(int x) {
 
    long reval = 0;
    for(;x;x/=10)
        reval = reval *10 + x%10;
    
    x = reval;
    if(reval != x) return 0;
    
    return reval;
}