您的位置:首页 > 其它

leetcode Reverse Integer

2015-06-01 10:03 447 查看
题目链接点击打开链接

这个题加了可能溢出的情况之后真的复杂。不过我属于用作弊的方法把这个题目做出来了。

public class Solution {
public int reverse (int x)
{
long xx=x;
if(xx==0)
{
return (int)xx;
}
boolean neg=false;
if(xx<0)
{
neg=true;
xx=-xx;
}

int length=(int)Math.log10(xx)+1;
long numbers[]=new long[length];
for(int i=length-1;i>=0;i--)
{

numbers[i]=xx%10;
xx/=10;
}
long result=0L;
int power=1;

for(int i=0;i<length;i++)
{
result+=numbers[i]*power;
power*=10;

}
if(result>Integer.MAX_VALUE)
{
return 0;
}
if(neg)
{
return -(int)result;
}
else
{
return (int)result;
}
}

}


下面是判断相加溢出的方法

(1)无符号整数相加

int uadd_ok(unsigned x, unsigned y)

{

unsigned z = x + y;

if(z < x)

return 0;

return 1;

}

(2) 有符号整数相加,这个要复杂一些

int add_ok(int x, int y)

{

int z = x + y;

if(x > 0 && y > 0 && z < 0)

return 0;

if(x < 0 && y < 0 && z > 0)

return 0;

return 1;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: