要考虑到的情况:
- 空字符串
- 正负号
- 溢出(最大的正整数值是0x7FFF FFFF,最小的负整数是0x8000 0000)
但是python和c/c++/java不同,后者里面的负数都是以补码的形式进行存储的,python中的负数自带符号。所以要注意是-0x80000000 <= sum*label <= 0x7FFFFFFF
class Solution:
def StrToInt(self, s):
# write code here
if not s:
return 0
l = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9,'+':'+','-':'-'}
sum = 0
label = 1
for i in s:
if i in l:
if i == '+':
continue
elif i == '-':
label = -1
else:
sum = sum*10 + l[i]
else:
return 0
if -0x80000000 <= sum*label <= 0x7FFFFFFF:
return sum*label
else:
return 0
京公网安备 11010502036488号