JIAKAOBO

LeetCode

venmo
wechat

感谢赞助!

  • ㊗️
  • 大家
  • offer
  • 多多!

Problem

Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range $[-2^{31}, 2^{31} - 1]$, then return 0.

Assume the environment does not allow you to store 64-bit integers (signed or unsigned).

Example 1:

Input: x = 123
Output: 321

Example 2:

Input: x = -123
Output: -321

Example 3:

Input: x = 120
Output: 21

Constraints:

  • $-2^{31} <= x <= 2^{31} - 1$

Code

class Solution {
    public int reverse(int x) {
        int res = 0;
        while(x != 0) {
            int digit = x % 10;
            int temp = res * 10 + digit;

            if(temp / 10 != res){
                return 0;
            }

            res = temp;
            x /= 10;
        }

        return res;
    }
}
class Solution {
    public int reverse(int x) {
        int res = 0;
        while(x != 0){
            int digit = x % 10;
            if(res > 0){
                if(res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && digit > Integer.MAX_VALUE % 10)){
                    return 0;
                }
            } else if (res < 0){
                if(res < Integer.MIN_VALUE / 10 || (res == Integer.MIN_VALUE / 10 && digit < Integer.MIN_VALUE % 10)){
                    return 0;
                }
            }

            res = res * 10 + digit;
            x /= 10;
        }

        return res;
    }
}