leetcode菜狗入门 | 7. 整数反转

7. 整数反转

题目描述

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

示例1:

输入: 123
输出: 321

示例2:

输入: -123
输出: -321

示例3:

输入: 120
输出: 21

解题思路

首先,是范围问题,32位的有符号整数,这里我使用16进制来存储,如果结果比超出了最大最小的范围,则返回0。
其次,先将输入整数每次对10取余,把此数放在结果数的末尾,就是将原结果x10再加上取余的数。最后把输入的数除10,相当于把最小的数拿掉了。
最后判断范围进行返回就好。

代码

class Solution {
public:
    int reverse(int x) {
        int max = 0x7fffffff; //int的最大值
        int min = 0x80000000; //int的最小值
        long ans = 0;
        while(x!=0){
            ans = ans*10+x%10;
            x = x/10;
        }
        if(ans > max || ans < min){
            return 0;
        }
        else{
            return ans;
        }
    }
};

你可能感兴趣的:(leetcode菜狗入门)