//首先要考虑溢出问题,如果溢出,就只能取最接近的值,然后这个值必须得由long来保存,才可能保存得到溢出值。
//以及在获取相反结果的时候每次都乘以10加x就可获得反转的数。
//这是我写的拙劣的代码
import java.util.ArrayList; public class Solution { public int reverse(int x) { int res = 0 ; ArrayList<Integer> result = null; if(x==0)return 0; if(x<0) { x = -x; result = result(x); for (int i = 0; i < result.size(); i++) { res+=result.get(i)*Math.pow(10, result.size()-i-1); } res=-res; }else { result = result(x); for (int i = 0; i < result.size(); i++) { res+=result.get(i)*Math.pow(10, result.size()-i-1); } } return res; } public ArrayList<Integer> result(int x) { ArrayList<Integer> list = new ArrayList<Integer>(); while(x>0) { int r = x; x=x/10; list.add(r); } return list; } }//这是我觉得考虑全面的安全最高的代码
public class Solution { public int reverse(int x) { int flag = x < 0 ? -1 : 1; x *= flag; long res = 0; while (x > 0) { res = res * 10 + x % 10; x /= 10; } if (flag * res > Integer.MAX_VALUE) { return Integer.MAX_VALUE; } if (flag * res < Integer.MIN_VALUE) { return Integer.MIN_VALUE; } return (int) (res * flag); } }