您的位置:首页 > 其它

7. Reverse Integer

2017-08-07 22:00 344 查看
1.题目

Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321

click to show spoilers.

Note:

The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

2.分析

  这道题比较简短,- -有一点没办法理解通过率怎么那么低- -,应该是超过int范围没有处理好。我是讲输入存入StringBuffer,然后利用StringBuffer的reverse();反转后,将结果保存进long中,如果没有超过int边界就输出,越界就输出0;其中正负数转换为整数处理,最后输出根据输入正负输出。

3.解题

我的解法:

public class Solution {
public int reverse(int x) {
long num = x;

String str ;
if(num>0){
str = String.valueOf(num);
}else{
str = String.valueOf(-num);
}

StringBuffer buffer = new StringBuffer(str);

String result = buffer.reverse().toString();

if(Long.valueOf(result)>Integer.MAX_VALUE){
return 0;
}
if(num<0){
return Integer.valueOf(result)*(-1);
}
return Integer.valueOf(result);
}
}


别人的解法:

public int reverse(int x)
{
int result = 0;

while (x != 0)
{
int tail = x % 10;
int newResult = result * 10 + tail;
if ((newResult - tail) / 10 != result)
{ return 0; }
result = newResult;
x = x / 10;
}

return result;
}


4.总结

  别人这个解法好像就是利用%10,然后还原来做,这样就讲数值反序过来,并通过步骤中能否还原来判断是否越界,因为一旦越过int字长范围,系统将随机差生一个数值。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: