ITPub博客

首页 > > > [LeetCode] Reverse Integer

[LeetCode] Reverse Integer

作者:Ruiyuan Li 时间:2015-04-17 00:00:00 0 删除 编辑

Reverse Integer

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

解题思路:

这道题比较简单,需要注意的就是要考虑int类型翻转之后,可能会溢出,若溢出,则返回0。先用一个long long类型来存储结果,然后转化成int类型,若数值不变,则没有溢出,若数值变了,则溢出了。

class Solution {
public:
    int reverse(int x) {
        int sign = 1;
        if(x<0){
            x=-x;
            sign=-1;
        }
        
        long long tempResult = 0;
        
        while(x!=0){
            tempResult *= 10;
            tempResult += x%10;
            x /= 10;
        }
        
        tempResult = tempResult*sign;
        
        int result = (int)tempResult;
        if(result!=tempResult){
            result=0;
        }
        
        return result;
    }
};

二次刷题(2015-07-29)

另外一种判断溢出的方法是,在里面定义了一些常量,具体可参考http://www.cplusplus.com/reference/climits/

class Solution {
public:
    int reverse(int x) {
        int sign = 1;
        if(x<0){
            sign = -1;
            x = -x;
        }
        long long result = 0;
        while(x!=0){
            result *= 10;
            result += x%10;
            x = x/10;
        }
        //判断是否溢出
        result = sign * result;
        if(result > INT_MAX || result < INT_MIN){
            return 0;
        }
        return (int)result;
    }
};


转载请注明: » [LeetCode] Reverse Integer
<!-- -->

原文作者:;如有侵权,请联系管理员删除。

上一篇: C#多线程编程1
请登录后发表评论 登录
全部评论

注册时间:2020-05-21

  • 博文量
    495
  • 访问量
    4825