Leetcode-08-String to Integer (atoi)
题目链接
解题思路:atoi的实现,有很多细节需要注意。两个判断条件很关键。INT_MAX/10 >= sum和INT_MAX - digit >= sum这两个判断条件确保了不会溢出。
class Solution:
# @return an integer
def atoi(self, str):
INT_MAX = 2147483647; INT_MIN = -2147483648
sum = 0
sign = 1
i = 0
if str == '':
return 0
while i < len(str) and str[i].isspace():
i += 1
if i < len(str) and str[i] == '-':
sign = -1
if i < len(str) and (str[i] == '-' or str[i] == '+'):
i += 1
while i < len(str) and str[i].isdigit():
digit = int(str[i])
if INT_MAX/10 >= sum:
sum *= 10
else:
if sign == 1:
return INT_MAX
else:
return INT_MIN
if INT_MAX - digit >= sum:
sum += digit
else:
if sign == 1:
return INT_MAX
else:
return INT_MIN
i += 1
return sign*sum