【leetcode】Python實現-7.顛倒整數
阿新 • • 發佈:2019-02-05
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.