7. Reverse Integer

题目描述和难度

  • 题目描述:

给定一个 32 位有符号整数,将整数中的数字进行反转。

示例 1:

输入: 123
输出: 321

 示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231,  231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。

思路分析

求解关键:要特别注意到反转以后整数越界的问题。

假设我们的环境只能存储 32 位有符号整数,其数值范围是 $[−2^{31}, 2^{31} − 1]$。根据这个假设,如果反转后的整数溢出,则返回 0。

参考解答

参考解答1

public class Solution {

    public int reverse(int x) {
        int sign = x >= 0 ? 1 : -1;
        long res = 0;
        x = sign * x;
        while (x > 0) {
            res = res * 10 + x % 10;
            x = x / 10;
        }
        res = sign * res;
        if (res > Integer.MAX_VALUE || res < Integer.MIN_VALUE) {
            return 0;
        }
        return (int) res;
    }
}

参考解答2:其实可以不用单独判断符号,并且溢出这件事可以在循环当中做。

public class Solution2 {

    public int reverse(int x) {
        if (x == 0) {
            return 0;
        }
        long res = 0;
        while (x != 0) {
            res = res * 10 + x % 10;
            x /= 10;
            if (res > Integer.MAX_VALUE || res < Integer.MIN_VALUE) {
                return 0;
            }
        }
        return (int) res;
    }
}

本篇文章的地址为 https://liweiwei1419.github.io/leetcode-solution/leetcode-0007-reverse-integer ,如果我的题解有错误,或者您有更好的解法,欢迎您告诉我 liweiwei1419@gmail.com