整数反转---简单

题目:

  给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例:

示例 1:

输入: 123
输出: 321

 示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

思路:

  先统计出长度,然后根据位数乘相应的权。如下:

class Solution {
public:
    int reverse(int x) {
        int c=x;
        int length=1;
        while(c/10!=0)
        {
            length++;
            c/=10;
        }
        long sum=0;
        while(length)
        {
            int n=x%10;
            sum+=n*std::pow(10,length-1);
            x/=10;
            length--;
        }
        if(sum>INT_MAX||sum<INT_MIN)
            return 0;
        return sum;
    }
};

简介的做法:

class Solution {
public:
    int reverse(int x) {
        long r = 0;
        while(x != 0){
            int m = x % 10;
            x = x / 10;
            r = r * 10 + m;
        }
        if(r > gMAX || r < gMIN)
            return 0;
        return r;
    }
};

 

posted @ 2019-01-25 15:32  manch1n  阅读(206)  评论(0编辑  收藏  举报