给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
输入:123 输出:321
示例 2:
输入:-123 输出:-321
示例 3:
输入:120 输出:21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
思路:转换成String利用reverse()函数取反,然后完成后再转换成int即可。
遇到的问题:负数无法直接转换,需要{负数->绝对值,反转的绝对值->负数}。
class Solution {
public int reverse(int x) {
//正数的边界(绝对值)
String z = "2147483647";
//负数的边界(绝对值)
String c = "2147483648";
//正数情况
if(x>0)
{
String y;
//转换成String
y = String.valueOf(x);
//取反
y =new StringBuffer(y).reverse().toString();
//判断是否反转后溢出
if(y.length()>=z.length()&&y.compareTo(z)>0)
return 0;
//不溢出时,转换会int
x = Integer.valueOf(y).intValue();
return x;
}
else{
x = -x;
String y;
//转换成String
y = String.valueOf(x);
//取反
y =new StringBuffer(y).reverse().toString();
//判断是否反转后溢出
if(y.length()>=c.length()&&y.compareTo(c)>0)
return 0;
//不溢出时,转换会int,负数返回负值
x = Integer.valueOf(y).intValue();
return -x;
}
}
}