算法小白,整数反转,力扣简单题,强行暴力,100行代码,直接裂开!!!
题目:给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
public class Zhengshufanzhuan {
static long xx = 0;
public static int reverse(int x) {
if (x>=Integer.MAX_VALUE||x<=Integer.MIN_VALUE){
return 0;
}
if (x == 0) {
return 0;
}else if (x>0&&x<10){
return x;
}else if (x>-9&&x<0){
return x;
}
if (x<0){
x=x-x-x;
if (x%10==0){
while (x%10==0){
x=x/10;
if (x%10!=0){
x=x-x-x;
break;
}
}
}else {
x=x-x-x;
}
}
String str=Integer.toString(x);
char[] c=str.toCharArray();
int len=c.length-1;
if (c[0]=='-'){//-12 4
if (c.length%2==0){
len=len+1;
for (int i = 1; i < (c.length+1)/2; i++) {
char a=c[i];
c[i]=c[len-i];
c[len-i]=a;
}
String s = new String(c);
xx=Long.parseLong(s);
if (xx>=Integer.MAX_VALUE||xx<=Integer.MIN_VALUE){
return 0;
}
return Integer.parseInt(s);
}
len=len+1;
for (int i = 1; i <= (c.length-1)/2; i++) {
char a=c[i];
c[i]=c[len-i];
c[len-i]=a;
}
String s1 = new String(c);
xx=Long.parseLong(s1);
if (xx>=Integer.MAX_VALUE||xx<=Integer.MIN_VALUE){
return 0;
}
return Integer.parseInt(s1);
}
if (c.length%2==0){
for (int j = 0; j < (c.length+1)/2; j++) {
char a=c[j];
c[j]=c[len-j];
c[len-j]=a;
}
String s2 = new String(c);
xx=Long.parseLong(s2);
if (xx>=Integer.MAX_VALUE||xx<=Integer.MIN_VALUE){
return 0;
}
return Integer.parseInt(s2);
}
for (int j = 0; j < (c.length)/2; j++) {
char a=c[j];
c[j]=c[len-j];
c[len-j]=a;
}
String s3 = new String(c);
xx=Long.parseLong(s3);
if (xx>=Integer.MAX_VALUE||xx<=Integer.MIN_VALUE){
return 0;
}
return Integer.parseInt(s3);
}