[LeetCode]007-整数反转

>>> 传送门

题目

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

题解

class Solution {
public:
    int reverse(int x) {
        int r = 0;
        while (x) {
            // r * 10 + x % 10 = INT_... => r = (INT_... - x % 10) / 10
            if (r > 0 && r > (INT_MAX - x % 10) / 10) return 0;
            if (r < 0 && r < (INT_MIN - x % 10) / 10) return 0;
            r = r * 10 + x % 10;
            x /= 10;
        }
        return r;
    }
};
posted @ 2022-12-18 22:07  余越  阅读(18)  评论(0)    收藏  举报