思路: 1 首先去除空白符,然后判断字符是否为空,为空(当原字符串是空或者全空格符),返回0
2若第一个非空字符为+-号:
if只有一个字符 或者 第二个字符不是数字,返回0 (这里逻辑要注意 :这里面or的逻辑是 只有一个字符 or 有2个字符且第二个字符不为数字)
else:遍历字符串,若当前字符是整数,加入res中
否则跳出循环
判断res是否在有效数字范围内
3若第一个数字为数字:判断过程与上面相似
4若第一个数字既不是+-号也不是数字,返回0
class Solution:
def myAtoi(self, str):
"""
:type str: str
:rtype: int
"""
j=0
for i in range(len(str)):
if str[i]==' ':
j=j+1
else:
break
str=str[j:]
if str=='':
return 0
elif (str[0]=='-') or (str[0]=='+'):
res=str[0]
if (len(str)<2 or (str[1] not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'])):
return 0
else:
for i in range(1,len(str)):
if str[i] not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
break
res=res+str[i]
if (int(res)>=-2147483648)& (int(res)<=2147483647):
return int(res)
else:
if int(res)>0:
return 2147483647
else:
return -2147483648
elif str[0] in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
res=str[0]
for i in range(1,len(str)):
if str[i] not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
break
res=res+str[i]
if (int(res)>=-2147483648)& (int(res)<=2147483647):
return int(res)
else:
if int(res)>0:
return 2147483647
else:
return -2147483648
else:
return 0