给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
rookie:
public static int reverse(int x) {
int length =x<0?String.valueOf(x).length()-1:String.valueOf(x).length();
int[] a = new int[length];
for(int i=0;i<length;i++){
//除以10取余数就是最后一位
a[i] = x%10;
x/= 10;
}
double pow =Math.pow(10,length-1);
double flag = a[0]*pow;
if (flag>(Math.pow(2,31)-1)||flag<Math.pow(-2,31)){
return 0;
}
double s=0;
for (int i=0;i<length;i++){
a[i]=a[i]*(int) pow;
pow=pow/10;
s=s+a[i];
}
if (s>(Math.pow(2,31)-1)||s<Math.pow(-2,31)){
return 0;
}
return (int) s;
}
大佬1:
public int reverse(int x) {
long n = 0;
while(x != 0) {
n = n*10 + x%10;
x = x/10;
}
return (int)n==n? (int)n:0;
}
大佬2:
public int reverse(int x) {
String xString = Integer.toString(x);
String string = xString;
int flag = 1;
if (x < 0) {
flag = -1;
string = xString.substring(1);
}
try {
return Integer.valueOf((new StringBuilder(string)).reverse().toString()) * flag;
}catch (Exception e){
return 0;
}
}
陷入沉思!