7、Reverse Integer

Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321

 Math

int reverse(int x) {
        //此题需要注意两种情况:1、x取最值,特别是最小值;2、反过来的时候需要防止数据溢出,如果溢出需要将结果置为0
        bool pos = x >= 0 ? true : false;
        int result = 0, temp = INT_MAX / 10;
        if (x != INT_MIN)
        {
            x = abs(x);
            int remain;
            while (x)
            {
                if (result > temp || result < 0)
                {
                    result = 0;
                    break;
                }
                else//result会出现两种情况1:result > temp, 则结果一定会溢出,但不一定一定会溢出为负数2:result < temp,result * 10结果加上一个个位数溢出为负数 
                    result = result * 10 + x % 10;
                x /= 10;
            }
            if (!pos)
                result = -result;
        }
    }

int reverse(int x) {
        //此题需要注意两种情况:1、x取最值,特别是最小值;2、反过来的时候需要防止数据溢出,如果溢出需要将结果置为0
        //方法2:直接用long long数据来做就不用担心数据溢出
        long long y = x;
        bool pos = y >= 0 ? true : false;
        y = abs(y);
        long long result = 0;
        while (y)
        {
            result = result * 10 + y % 10;
            y /= 10;
        }
        if (!pos)
            result = -result;
        return (result > INT_MAX || result < INT_MIN) ? 0 : (int)result ;
    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值