欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LintCode 题目:反转整数

程序员文章站 2022-03-24 23:43:17
...

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;

即可:

LintCode 题目:反转整数

原因:

当数字超过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;

即可:

LintCode 题目:反转整数

 

注意:

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

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