class Solution:
def myAtoi(self, s):
s=s.strip()
read=""
for i in range(len(s)):
if i==0 and (s.startswith("-") or s.startswith("+")):
read=read+s[i]
continue
try:
int(s[i])
read=read+s[i]
if int(read)>=2**31-1:
read=2**31-1
return read
elif int(read)<=-2**31:
read=-2**31
return read
except Exception:
break
if not read:
read=0
try:
int(read)
except Exception:
read=0
return int(read)
解题思路
先去除s左右的空格、换行、\t等字符
然后开始读入(定义read变量)
如果以-或+开头,将这个符号添加,然后开始下一次遍历
int(s[i]) 如果遍历的该字符不为数字,就会报错,并直接退出循环
如果为数字,将它添加到read中
如果read不在~的范围中,超出上限则设置为上限,超出下限则设置为下限
for循环后面,判断如果read为空,就设置为0
如果不为整数,也设置为0
最后输出read
关注我,进入Leetcode专栏,查看更多题目的解题思路吧!