力扣算法 7. 整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

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

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

力扣算法 7. 整数反转_第1张图片
力扣算法 7. 整数反转_第2张图片
记rev是翻转之后的数字,为了完成翻转,我们可以重复弹出x末尾的数字,将其推入rev的末尾,直到x是0

要在没有辅助栈或者数组的帮助下弹出或者推入数字,我们可以使用以下的数学方法:
力扣算法 7. 整数反转_第3张图片
题目需要判断推入数字是否溢出,要在推入数字之前判断,如果溢出那么不等式不成立返回0

但是题目要求不允许使用64位整数,也就是运算过程中的数字必须在32位有符号整数的范围内,因此我们不能直接按照上面式子进行计算,需要找其他方式。

力扣算法 7. 整数反转_第4张图片力扣算法 7. 整数反转_第5张图片力扣算法 7. 整数反转_第6张图片
C++

class Solution {
public:
    int reverse(int x) {
        int rev =0;//新建一个翻转之后的变量rev
        while(x!=0){
            if(rev<INT_MIN/10||rev >INT_MAX/10){//满足上述不等式
                return 0;
            }
            int digit =x%10; //取最后一个数
            x/=10;//更新x的值
            rev=rev*10+digit;//推入翻转之后的变量rev
        }
        return rev;
    }
};

你可能感兴趣的:(力扣算法题,算法,leetcode,职场和发展)