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.