整数反转_LeetCode05


整数反转

题目

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

  • 示例1:
输入: 123
输出: 321
  • 示例2:
输入: -123
输出: -321
  • 示例3:
输入: 120
输出: 21

解题思路

%10模除可以得到数字的最后一位;/10可以得到数字的前n位

根据前面两个原理,可以将给定的数字依次进行模除运算得到最后一位,然后根据上一次的结果在进行10操作后相加得到新的结果

public static int reverse(int x){
    int rev = 0;
    while(x!=0){
        int lastNum = x%10;
        if(rev>Integer.MAX_VALUE/10 ||rev==Integer.MAX_VALUE/10 && lastNum > 7){
            return 0;
        }
        if(rev<Integer.MIN_VALUE/10 ||rev==Integer.MIN_VALUE/10 && lastNum < -8){
            return 0;
        }
        rev = rev*10 + lastNum;
        x = x/10;
    }
    return rev;
}

  TOC