LeetCode 7 整数反转 (C语言)

题目:

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [− 2 31 2^{31} 231, 2 31 2^{31} 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。

示例1:

输入:x = 123
输出:321

示例2:

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

示例3:

输入:x = 120
输出:21

示例4:

输入:x = 0
输出:0

提示:

- 2 3 1 2^31 231 <= x <= 2 31 2^{31} 231 - 1

解题代码:

int reverse(int x){

    // MAX_INT = 2147483647    x <= 2^31 - 1
    // MIN_INT = -2147483648   -2^31 <= x

    int val = 0;
    while(x != 0)
    {
        int ans = x % 10;

		// 判断溢出情况
        if(val > 214748364 || (val == 214748364 && ans > 7))
            return 0;
        if(val < -214748364 || (val == -214748364 && ans < -8))
            return 0;

        val = val * 10 + ans;

        x /= 10;
    }
    return val;
}

LeetCode 7 整数反转 (C语言)

上一篇:31岁进公司,发现自己年龄最大是什么体验,安卓app开发教程


下一篇:【算法题归纳合集】图论-最小生成树的典型应用