leetcode 007-Reverse Integer

problem:

Reverse digits of an integer.

example:

Example1: x = 123, return 321
Example2: x = -123, return -321
Difficulty:Easy

note:

The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

hint1:

  • a % b = a - (a / b) * b
  • 判断是否越界
  • 当x<0时,不能使用return -reverse(-x),INT_MIN=-INT_MAX-1,再调用函数时越界报错

code:

#include
#include
int reverse(int x) {
    int y = 0,temp;
    
    while(x){
        temp = x % 10;      //获取x的奇数位
        x = x / 10;
        if(y > (INT_MAX / 10) || y < (INT_MIN / 10)){
            return 0;
        }
        if((y == (INT_MAX / 10) || y == (INT_MIN / 10)) && temp >= 7){
            return 0;
        }
        y = y * 10 + temp;
    }
    return y;
}
int main() {
    int t = reverse(1534236469);
    printf("%d\n",t);
}

hint2:

使用long型存放逆置的数字,再判断是否越界

int reverse(int x) {
    long y = 0;
    while(x){
        y = y * 10 + x % 10;
        x = x / 10;
        printf("%d\n",y);
    }
    if(y > INT_MAX||y

你可能感兴趣的:(leetcode 007-Reverse Integer)