leetcode 链接:https://leetcode-cn.com/problems/string-to-integer-atoi/
耗时:72ms
class Solution:
def myAtoi(self, str):
"""
:type str: str
:rtype: int
"""
str = str.strip()
if not str:
return 0
returnStr = ""
if self.judgeInt(str[0], 1):
returnStr = str[:1]
for i in range(1,len(str)):
if self.judgeInt(str[i], 0):
returnStr = str[:i+1]
else:
returnStr = str[:i]
break
try:
returnStr = int(returnStr)
return self.intRange(returnStr)
#self.intRange(returnStr)
except:
print("step_2")
print(returnStr)
return 0
else:
return 0
def judgeInt(self, s, first_flag):
try:
s = int(s)
return True
except:
print("step_1")
if s == '-' or s == '+' :
if first_flag:
return True
else:
return False
else:
return False
def intRange(self, i):
i = int(i)
if i > (2**31-1):
return 2**31-1
elif i < (-2**31):
return -2**31
else:
return i
耗时:56ms
class Solution:
# @return an integer
def myAtoi(self, str):
str = str.strip()
str = re.findall('(^[\+\-0]*\d+)\D*', str)
try:
result = int(''.join(str))
MAX_INT = 2147483647
MIN_INT = -2147483648
if result > MAX_INT > 0:
return MAX_INT
elif result < MIN_INT < 0:
return MIN_INT
else:
return result
except:
return 0
其他方法看 leetcode 链接 评论区~