LeetCode 7.整数反转

50 阅读1分钟

题目描述:

给你一个 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

Tips:

  • 很有意思的一个题,建议输出一下INT_MAX和INT_MIN
  • 大于0和小于0的x,分开判断

Code:

class Solution {
public:
    int reverse(int x) {
        int maxx=INT_MAX;
        int minn=INT_MIN;
        int ans=0;
        int f=1;
        if(x<0){
            f=-1;
        }
        while(x){
        //判断如果x大于0,用ans和INT_MAX/10比较一下
        //判断如果x小于0,用ans和INT_MIN/10比较一下(绝对值)
            if(((f==1)&&(ans>maxx/10)||(f==-1&&abs(ans)>abs(minn/10)))){
                return 0;
            }
            ans*=10;
            ans+=(x%10);
            x/=10;
        }
        return ans;
    }
};
  • -231 <= x <= 231 - 1