7. Reverse Integer 【整数反转】

描述

Given a 32-bit signed integer, reverse digits of an integer.

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

例子
在这里插入图片描述
思路

由于%符号,python 和 c++不一样,python是取模,c++是取余。负数%一个数,取模和取余不一样。所以:python要分正负,c++直接就搞了

答案

  • java
class Solution {
    public int reverse(int x) {
        
        //第一种,先把数变成正数,但是看来
        //第二种,不用将负数变为正数,最后都要变为0 java中%为取余
        long res=0;
        // int flag=1;
        // if(x<0) flag=-1;
        // x=Math.abs(x);
        while(x!=0) {
            res=res*10+x%10;
            x=x/10;
        }
        
        // res*=flag;
        return res<-(1<<31) || res>(1<<31)-1? 0: (int)res;
    }
}
  • python
    def reverse(self, x: int) -> int:
        MAX = 2**31-1
        MIN = -2**31
        num=0
        
        flag = 1
        if x<0:
            flag = -1
            x=-1*x
            
        while x:#到0了就结束
            num=num*10+x%10
            x = int(x/10)
            
        num = num*flag
        
        return 0 if num>MAX or num<MIN else num
  • c++
    int reverse(int x) {
        long num=0;//可能会超过范围,所以为Long

        while (x)//x可为正或负,知道为0
        {
            num = num*10+x%10;
            x /= 10;
        }
        
        return (num>INT_MAX || num<INT_MIN)? 0: num;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值