LeetCode:7. Reverse Integer(Easy)

题目要求:将给出的整数进行逆序输出

注意:整数的最大范围-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 }
原文地址:https://www.cnblogs.com/huiAlex/p/8035028.html