7. Reverse Integer

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321


Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
public class ReverseInteger {
    public static int reverse(int x) {
        if(x == -2147483648)
            return 0;
        int[] max = {2, 1, 4, 7, 4, 8, 3, 6, 4, 7};
        int res = 0;
        int cnt = 0;
        boolean overflow = true;
        boolean flag = false;
        boolean change = false;//没有确定是否溢出
        if(x < 0) {
            x = -x;
            max[9] += 1;//负数最大为-2147483648
            flag = true;
        }
        
        while(x != 0) {
            int t = x % 10;
            if(!change && t > max[cnt]) {
                overflow = true;
                change = true;
            }
            if(!change && t < max[cnt]) {
                overflow = false;
                change = true;
            }
            cnt++;
            if(cnt == 10 && overflow) {
                return 0;
            }
            res = res * 10 + t;
            x /= 10;
        }
        if(flag)
            res = -res;
        return res;
        
    }
    public static void main(String[] args) {
        System.out.println(reverse(-2147483648));   
    }

}

public int reverse(int x){
    int result = 0;

    while (x != 0){
        int tail = x % 10;
        int newResult = result * 10 + tail;
        if ((newResult - tail) / 10 != result) { 
            return 0; 
        }
        result = newResult;
        x = x / 10;
    }

    return result;
}

你可能感兴趣的:(7. Reverse Integer)