问题描述:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
解法1:
因为刚刚做过利用StringBuffer类做字符串翻转的题目,所以这道题首先考虑了这种方法。要注意的是,一定要考虑越界的问题,可用如下方法查看Int类型的最大值和最小值
int max = Integer.MAX_VALUE;
int min = Integer.MIN_VALUE;
System.out.println(max);
System.out.println(min);
代码如下:
class Solution {
public int reverse(int x) {
if( x > Math.pow(2, 31) || x < (-(Math.pow(2, 31)-1)) ){
return 0;
}
boolean positive = true;
if(x < 0){
positive = false;
x = -x;
}
StringBuffer str = new StringBuffer();
str.append(x+"");
str.reverse();
if(Long.parseLong(str.toString()) > (Math.pow(2, 31)-1))
return 0;
int a = Integer.parseInt(str.toString());
if(positive)
return a;
else
return -a;
}
}
解法2:
直接利用求余一位一位取出,保存在新的变量中
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;
}