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;
}
};

阅读更多
文章标签: leetcode
个人分类: leetcode
上一篇Leetcode 第6题 ZIGZAG后,行列输出
下一篇Leetcode 第8题 判断一个整数是否为回文串
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭