LeetCode--代码详解 7.整数反转

7.整数反转

题目

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0

提示:

  • -231 <= x <= 231 - 1

思路

获得末尾元素,进行溢出判断

用long强转int更方便,但题目不允许

代码

class Solution {
    public int reverse(int x) {
        int ans = 0;
        while(x!=0){
            int tmp = x%10; //获得末尾元素
            if(ans > Integer.MAX_VALUE /10 || (ans == Integer.MAX_VALUE /10 && tmp>7))
                return 0;
            if(ans < Integer.MIN_VALUE /10 || (ans == Integer.MIN_VALUE /10 && tmp<-8))
                return 0;
            ans = ans *10 +tmp;
            x /= 10;
        }
        return ans;        
    }
} 

你可能感兴趣的:(LeetCode,算法,leetcode)