7. Reverse Integer

Leetcode Diary

Posted by Xudong on July 3, 2020

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

Note: Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

Solution

  • 类似bit manipulate中的左移右移来解决问题
  • 左移: \(x = x / 10\)
  • 右移: \(y = y * 10 + mod\)
  • 注意防范overflow,先使用long型,最后再转换成int

Code(JAVA)

public int reverse(int x) {
    long res = 0l;
    while(x!=0){
        res = res*10 + x%10;
        if(res < Integer.MIN_VALUE || res> Integer.MAX_VALUE)
            return 0;
        x = x / 10;
    }
    return (int)res;
}