整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2*31, 2*31 − 1] ,就返回 0。
初始版本,最垃圾
public static int reverse(int x) {
int i=0;
int max = 2147483647;
int min = -2147483648;
long z=0;
List<Integer> lists =new ArrayList<>();
if(x==0){return 0;}
while(x%10==0){//去除后面的0
x=x/10;
}
while (x/10!=0){
int ch = x%10;
lists.add(ch);
x=x/10;
i++;
}
lists.add(x);
for (int j=0;j<=i;j++)
{
z=z+lists.get(j)*(long)Math.pow(10,i-j);
if(z>max||z<min){return 0; }
}
return (int)z;
}
更新版本
public static int reverse(int x) {
int max = 2147483647;
int min = -2147483648;
long s=0;
while (x!=0){
s = s*10+x%10;//将原来的数字乘以10再加一个个位数
x =x/10;
}
if(s>min&&s<max){
return (int)s;
}
else {
return 0;
}
}

浙公网安备 33010602011771号