【leetcode】Python实现-7.颠倒整数

7.颠倒整数

给定一个范围为 32 位 int 的整数,将其颠倒。

例 1:

输入: 123
输出: 321

例 2:

输入: -123
输出: -321

例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能处理 32 位 int 范围内的整数。根据这个假设,如果颠倒后的结果超过这个范围,则返回 0。

我:

 l = list(str(x))
        n = len(l)
        for i in range(n-1,0,-1):
            if l[i] != '0':
                l = l[:i+1]
                break
        if l[0] =='-':
                    l = l[:0:-1]
                    l.insert(0,'-') 
        else:
            l = l[::-1]
        return int(''.join(l))

other1:

 x = int(str(x)[::-1]) if x >0 else -int(str(-x)[::-1])
return x if x < 2147483648 and x >-2147483648 else 0

other2:

        sign = x < 0 and -1 or 1
        x = abs(x)
        ans = 0
        while x:
            ans = ans * 10 + x % 10
            x /= 10
        return sign * ans if ans <= 0x7fffffff else 0

总结:
1.python中字符串就可以完成分片操作,不需要再转换为list。用一个新的数据对象时要考虑清楚为什么用;
2.正数和负数只相差一个符号!如例2中设置一个符号位。1与任何数与都为任何数,0与任何数与都为0。与1 或是为了将0变为1.
3.对于32位的限制,去掉一个符号位,还剩31位。所以范围是正负2的31次方之间,可以像例2一样表示0x7ffffff.

猜你喜欢

转载自blog.csdn.net/qq_34364995/article/details/80274065