7. Reverse Integer

来源:互联网 发布:dns域名系统 编辑:程序博客网 时间:2024/05/22 00:36

Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321

这道题题目好理解,就是要考虑倒转的时候要考虑超出int的范围的要直接输出0;

#include<stdio.h>#include<stdlib.h>int reverse(int x) {    int temp=0;    if(0==x)        return 0;    while(x)    {        if(temp>214748364||(temp==214748364&&x>7)||temp<-214748364||(temp==-214748364&&x<-8))            return 0;        temp=temp*10+x%10;        x=x/10;    }    return temp;}int main(){    int x;    scanf("%d",&x);    printf("%d\n",reverse(x));    return 0;}

还有一种更简单的方法,将结果设为范围更大的long long型数据就可以了,如果超过int的范围就返回0。
C++代码如下

class Solution {public:    int reverse(int x)     {        long long temp=0;        while(x)        {            temp=temp*10+x%10;            x=x/10;        }        if(temp>INT_MAX||temp<INT_MIN)            return 0;        return (int)temp;    }};

同样也可以将数据转化为double,然后返回值还是int

class Solution {public:    int reverse(int x)     {        double temp=0;        while(x)        {            temp=temp*10+x%10;            x=x/10;        }        if(temp>INT_MAX||temp<INT_MIN)            return 0;        return (int)temp;    }};
0 0