7.、Reverse Integer(整数取反)

题目要求很简单,就是给定一个在[−2^31, 2^31 − 1]范围内的整数,对该整数取反。
比如,
输入=123, 输出=321。
输入=-123,输出=-321。
输入=120, 输出=21。

这个题目在求解的时候,需要注意的是数据类型的选取,因为涉及到溢出,其次当输出结果产出范围后,结果要变为0。在编写代码的时候,因为忘记了移位符号和运算符的优先级顺序,卡了一下,刚好当天晚上在看《深入理解计算机系统》时候,看到这个知识点,移位符的优先级是低于运算符的。在python中是不需要考虑数据类型的,代码如下所示:

C++:

@by_chandepire
    int reverse(int x) {
        long long result=0;
        long long max = ((long long)1<<31)-1;
        long long min = 0 - (1 << 31);
        while(x)
        {
            result = result * 10 + x % 10;
            x = x /10;
        }
        return result>max || result < min?0:result;
    }

python:

@by_chandepire
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        result = 0
        min = -(1<<31)
        max = (1<<31) - 1
        flag = 1
        if x < 0:
            flag = -1
            x = -x
        while x:
            result = result*10 + x % 10
            x = x / 10
        if result < min or result > max:
            return 0
        else:
            return result*flag

你可能感兴趣的:(leetcode刷题记录)