题解 | #反转数字#

反转数字

https://www.nowcoder.com/practice/1a3de8b83d12437aa05694b90e02f47a

#include <climits>
class Solution {
public:
    /**
     * 
     * @param x int整型 
     * @return int整型
     */
    int reverse(int x) {
        if (x == INT_MIN) {
            return 0;
        }
        bool sign = false;
        if (x < 0) {
            x = -x;
            sign = true;
        }
        int res = 0;
        while (x) {
            int tmp = x % 10;
            if (res > 214748364 || (res == 214748364 && (tmp + sign > 8))) {
                return 0;
            }
            res = res * 10 + tmp;
            x /= 10;
        }
        return sign ? -res: res;
    }
};

思路:模拟。

因为不能用long long:

* 如果x为INT_MIN,需要特殊处理。

* 记录x的符号,将x转成正数统一处理。

* 模拟倒序。

* 如果即将溢出,判断溢出条件,如果确实溢出了则返回0。

* 返回倒序结果。

全部评论

相关推荐

10-14 13:25
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务