7. 整数反转

题目:https://leetcode-cn.com/problems/reverse-integer/
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

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

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

我的方法一

边界

  1. 反转后的数可能INT越界

代码

class Solution {
public:
    int reverse(int x) {
        int ret = 0;
        int remainder=0;

        while(x){
            if(ret < INT_MIN / 10 || ret > INT_MAX / 10){
                return 0;
            }
            
            ret *= 10;
            remainder = x%10;

            if(remainder >=0){
                if(ret > INT_MAX-remainder){
                    return 0;
                }else{
                    ret += remainder;
                }
            }else{
                if(ret < INT_MIN-remainder){
                    return 0;
                }else{
                    ret += remainder;
                }
            }
            x = x / 10;
        }

        return ret;
    }
};

你可能感兴趣的:(7. 整数反转)