整数翻转
第一次代码编辑
使用整数二叉反转
public int test1(int x){
String c= x<0?"-":"";
x= x<0?Math.abs(x):x;
int start=0;
int end=0;
//判断如果超出越界将返回为0
if( x>=Integer.MAX_VALUE || x<= Integer.MIN_VALUE ){
return 0;
}
String s = String.valueOf(x);
char[] chars = s.toCharArray();
if(chars.length<2){
return x;
}
if( (end=chars.length)%2==0){
while(start !=end){
char aChar = chars[start];
chars[start]= chars[end-1];
chars[end-1]=aChar;
start++;
end--;
}
}else{
while(start <(chars.length/2+1 ) ){
char aChar = chars[start];
chars[start]= chars[end-1];
chars[end-1]=aChar;
start++;
end--;
}
}
long longer = Long.valueOf(c+String.valueOf(chars));
if(longer>=Integer.MAX_VALUE || longer<= Integer.MIN_VALUE){
return 0;
}
Integer abc=(int)longer;
return abc;
}
第二次代码编辑
根据思考使用数学方法取模,取余方法
public int test2(int x){
// 判断最大值返回为0
if(Integer.MAX_VALUE == x || Integer.MIN_VALUE==x ){
return 0;
}
// 判断是否为负数
int sign=x<0?-1:1;
// 将负整数转换为证书
x= x<0 ? -x:x;
String hullstr="";
int result;
while ( (result=x%10) != x ){
hullstr+=x%10;
x/=10;
}
// 余位拼接
if( (result=x%10) == x ){
hullstr+=result;
}
long hulllong=Long.parseLong(hullstr);
hulllong=hulllong*sign;
if(Integer.MAX_VALUE<hulllong ||Integer.MIN_VALUE>hulllong )
return 0;
result= (int) hulllong;
return result;
}
上传LeetCode发现效果不理想,思考原因是否用string 原因导致运行时间过长,后来将String 转换int
第三次代码提交
** string 转 int**
public int reverse(int x) {
// 判断最大值返回为0
if(Integer.MAX_VALUE == x || Integer.MIN_VALUE==x ){
return 0;
}
// 判断是否为负数
int sign=x<0?-1:1;
// 将负整数转换为证书
x= x<0 ? -x:x;
int result = 0;
int last;
while ( (last=x%10) != x ){
result = result*10+ last;
x/=10;
}
long hulllong = 0;
// 余位拼接
if( (last=x%10) == last ){
hulllong = result;
hulllong =hulllong*10+ last;
}
hulllong=hulllong*sign;
if(Integer.MAX_VALUE<hulllong || Integer.MIN_VALUE>hulllong )
return 0;
result= (int) hulllong;
return result;
}