给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
输入: 123 输出: 321
示例 2:
输入: -123 输出: -321
示例 3:
输入: 120 输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
这题思路很简单,就是每次求余得首位,在除去首位,每次递加。
坑点在1534236469转化为int后超出范围了,自动变为1056389759所以一直验证不通过,需要将转化后的数字设定为long类型,返回数值时再强转。
public int reverse(int x) {
boolean flag = x<0;
if(flag) x*=-1;
long k=0;
while(x>0) {
k=k*10+x%10;
x/=10;
}
if(flag) k*=-1;
if (k > Integer.MAX_VALUE || k < Integer.MIN_VALUE) return 0;
return (int)k;
}
public static void main(String[] args) {
reverse7 a = new reverse7();
int num = a.reverse(1534236469);
System.out.println(num);
}