题意:输入一个int 数字,翻转数字的顺序。如123,返回321。
要注意int的数据范围防止溢出,1.末尾有零;2.翻转后溢出要输出0.
package edu.jnu;
import java.util.Vector;
public class Main {
public static void main(String[] args) {
// write your code here
Main m = new Main();
System.out.println(m.reverse(-2147483648));
}
public int reverse(int x) {
long xx = x;//int 的范围是 【-2147483648,2147483648-1】,防止下面取相反数溢出
boolean flag = false;//用于标记正负
if(xx < 0){//取相反数
flag = true;
xx = -xx;
}
long ans = 0;
long temp = 0;
while(xx != 0){//按位取出,从个位开始 ,十,百,千,……
temp = xx%10;
xx /= 10;
ans += temp;
if(xx>0){ //如果末尾是0, 如 23340000,返回4332
ans *= 10;
}
}
if(ans > (long) Math.pow(2,31) - 1)//翻转后可能会溢出
ans = 0;
if(flag)
ans = -ans;
return (int)ans;
}
}