关闭

LeetCode 第7题 翻转数字

标签: leetcode
120人阅读 评论(0) 收藏 举报
分类:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6536次
    • 积分:547
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条