您的位置:首页 > 其它

Reverse Integer

2015-10-30 13:09 197 查看

问题描述

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

算法

代码一:

public int reverse(int x) {
long rev= 0;
while( x != 0){
rev= rev*10 + x % 10;
System.out.println(rev);
x= x/10;
if( rev > Integer.MAX_VALUE || rev < Integer.MIN_VALUE)
return 0;
}
return (int) rev;
}


代码二:

public int reverse(int x) {
int result = 0;
while (x != 0) {
if (result * 10 / 10 != result) return 0;   // result*10/10 will not equals result if overflow, if not overflow, result*10 + x%10 is safe, then continue
result = result * 10 + x % 10;
x /= 10;
}
return result;
}


注意事项:

1.对于int型,一定要注意可能存在越界现象,比如当x=1234567899时,revers后就越界了。代码一的解决方法是用Long型变量。代码二的方法比较独特,但是代码二不是正确的,假如result*10=2147483646,并且x%10=4,虽然result*10/10=result,但是result*10+x%10 越界。代码二可以借鉴的思想是,如果result*10是越界的,那么result*10/10!=result。

2.对于一个负数x=-212,x%10=-2,而不是8.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: