给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
输入: 123 输出: 321
示例 2:
输入: -123 输出: -321
示例 3:
输入: 120 输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
public class Solution {
public static final int MAX_LENGTH =32;
public static final int DEFAULT_VALUE= 0;
public int reverse(int x) {
int[] marks = new int[MAX_LENGTH];
boolean isNagativeValue = false;
int absoluteValue = x;
int remainder;
int reverseValue=0;
boolean stepFlag = false;
double maxValue=Math.pow(2, 31)/10;
if (x < 0) {
isNagativeValue = true;
absoluteValue = -x;
} else if (x == 0) {
return x;
}
int counter = 0;
while (absoluteValue > 0) {
remainder = absoluteValue % 10;
absoluteValue /= 10;
if ( stepFlag||remainder > 0 )
{
marks[counter++] = remainder;
stepFlag = true;
}
}
for(int i =0;i<=counter-1;++i)
{
if(reverseValue>maxValue)
{
return 0;
}
reverseValue = reverseValue*10+marks[i];
}
if(isNagativeValue)
{
reverseValue*=-1;
}
return reverseValue;
}
}