LintCode 题目:反转整数

URL:https://www.lintcode.com/problem/reverse-integer/description

描述

将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。

您在真实的面试中是否遇到过这个题?  

样例

样例 1:

输入:123
输出:321

样例 2:

输入:-123
输出:-321

1.通过率:92%

在代码段中添加:

int sum = 0,flag=0;
        if(n<0){
            flag = 1;
            n=-n;
        } 
        while(n/10!=0){
            sum = sum*10+n%10;
            n/=10;
        }
        sum = sum*10+n;
        if(sum>2147483647)
            return 0;
        if(flag == 1)
            sum = -sum;
        return sum;

即可:

原因:

当数字超过int的表示类型时已经不能使用int类型来表示,所以,要选用比int类型表示方位广的long long类型。

2.通过率:100%

在代码段中添加:

long sum = 0,flag=0;
        if(n<0){
            flag = 1;
            n=-n;
        } 
        while(n/10!=0){
            sum = sum*10+n%10;
            n/=10;
        }
        sum = sum*10+n;
        if(sum>2147483647)
            return 0;
        if(flag == 1)
            sum = -sum;
        return sum;

即可:

注意:

2147483647可以使用INT_MAX或者pow(2,31)代替,关于C/C++相关的数据类型表示范围请参考:

C语言变量类型及其表示范围

发布了303 篇原创文章 · 获赞 550 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_42410605/article/details/103147155