您的位置:首页 > 其它

Leetcode Reverse Integer 反转整数

2015-08-03 21:04 615 查看
Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321

一开始没考虑溢出情况:

int reverse(int x) {
long sum=0;
while(x){
sum*=10;
sum+=x%10;
x=x/10;}
return sum;
}
提交后报错,很明显就是WA,考虑溢出情况:reverse之后如果上溢,返回最大值INT_MAX; 如果是下溢,返回最小值INT_MIN。这里没有简单地将INT_MIN赋值成-2147483648,是因为-2147483648对于编译器而言是个表达式,而2147483648对于32-bit整数是无法表示的,所以经过这个表达式的结果是未定义的。在GCC上直接写-2147483648后,编译器给出了警告,说结果是unsigned。类似的有INT_MAX。

int reverse(int x) {
if(x==INT_MIN)return 0;//实际上int型的x只可能x==INT_MIN
long sum=0;
bool flag=1;
if(x<0) {flag=0;x=x*(-1);}
int intf=INT_MAX/10;
while(x){
if(sum>intf){return 0;}
else{
sum*=10;
sum+=x%10;
x=x/10;}}
if(flag==1)return sum;
else return sum*(-1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: