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;
即可:
原因:
当数字超过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语言变量类型及其表示范围
上一篇: html javascript jsp之间变量值的互相读取
下一篇: Linux命令行