题目要求:将给出的整数进行逆序输出
注意:整数的最大范围-2147483648~2147483647,当翻转后的数超出范围后返回0
思路:对给出的整数除以10,取余和取整;然后对取整部分继续取余和取整,同时将前一次取余的部分乘10再加上该次取余...直至余数为零
1 public class Solution { 2 3 public static void main(String[] args) { 4 Solution sol = new Solution(); 5 // System.out.println(t.reverse(-123)); 6 // System.out.println(t.reverse(1000)); 7 // System.out.println(t.reverse(123)); 8 System.out.println(sol.reverse(1324565656)); 9 } 10 11 public int reverse(int x) { 12 // 单独处理MIN_VALUE,因为最大范围和最小范围绝对值差1 13 if (x == Integer.MIN_VALUE) 14 return 0; 15 int num = Math.abs(x); 16 int result = 0; 17 while (num != 0) { 18 // 判断是否超出MAX_VALUE 19 if (result > (Integer.MAX_VALUE - num % 10) / 10) 20 return 0; 21 result = result * 10 + num % 10; 22 num = num / 10; 23 } 24 // 最后判断正负号 25 return x > 0 ? result : -result; 26 } 27 }