1 原题
Reverse Integer 翻转
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
2 解析
大水题啊,就是给定一个数,让你翻转。。。就是小心溢出就好。。
防止溢出方式很多:
1、比如转变成Long,再加判断就不会溢出了。。
2、或者找到比最大最小值小10被的,提前预防
至于到转么,不就是一个/ 一个% 的配合么,不多说了
3 AC Java解
public class Solution {
/**
* 最简单的方式,采用long拓展,并且提前判断是否超出了Integer范围,flag是符号
* **/
public int reverse2(int x) {
if(x==0) return x;
long tmp=Math.abs(x);
long flag=tmp/x;
long result=0;
while (tmp>0){
if(result*10>Integer.MAX_VALUE || result*10<Integer.MIN_VALUE)
return 0;
result=result*10+tmp%10;
tmp=tmp/10;
}
return (int)(flag*result);
}
/**
* 不用也可以嗒,提前算好就好
* */
public int reverse(int x) {
if(x==0) return x;
int tmp=Math.abs(x);
int flag=tmp/x;
int result=0;
int maxs=Integer.MAX_VALUE/10;
int mins=Integer.MIN_VALUE/10;
while (tmp>0){
if(result > maxs|| result < mins)
return 0;
result=result*10+tmp%10;
tmp=tmp/10;
}
return (flag*result);
}
}