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<stdio.h>
#include<limits.h>
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<INT_MIN){
        return 0;
    }
    return y;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容