LeetCode 第7题 翻转数字

Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321


非常简单的一道题,最主要的错误是没有考虑到翻转以后会越界。int 最大只能保存2^32-1 即-2147483648~~~~2147483647 ,因此在使用中间变量时使用long 类型,long类型的范围2^64(8个字节).

思路

特例:数值在-9到9之间,直接返回

(1)中间变量设为0,取得符号

(2)取最后一位end(利用对10取余)

(3)中间变量  = 中间变量*10 + end;

(4)若还未去完,重复(2)(3)

(5)若中间变量》整数最大范围,则返回0,否则,返回中间变量*符号


class Solution {
public:
int reverse(int x) {
int flag=1;  
        if( x<0 ) {  
            flag = -1;  
            x = -x;  
        }  
          
        long y = x%10;  
          
        while( x/10 != 0 )

 {  
            x /= 10;  
            y *= 10;  
            y += x%10;  
        }  
int temp1 = y;
if (y - temp1 != 0)
{
return 0 ;
}
else
return temp1*flag;
}
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值