https://leetcode.com/problems/string-to-integer-atoi/
先把特殊情况(空串,全空格,字母开头)return 0
然后处理将头部的空格处理掉 (如果有)
再判断str[0]是数字/字母/符号
——符号 (以最后一个符号为准)初始化符号为+ sign=1
——字母 return0
最后处理成以数字为开头字符串 处理到连续的最后一个数字
将串强制转换成long 和int的MAX MIN比较 输出
class Solution:
# @return an integer
def atoi(self, str):
if str=='':
return 0
elif str[0].isalpha()==True:
return 0
elif str.isspace():
return 0
else:
n=-1
for i in range(len(str)): #to delete all the spaces at the front of the string
if str[i]==' ':
n=i
else:
break
str=str[n+1:]
if str[0].isalpha()==True:
return 0
else: #number
sign=1
if str[0]=='+':
sign=1
str=str[1:]
elif str[0]=='-':
sign=-1
str=str[1:]
else:
sign=1
if str[0].isdigit()==False:
return 0
else:
n=0
for i in range(len(str)):
if str[i].isdigit()==True:
n=i
else:
break
#str[0:n+1]是数字部分
num=long(str[0:n+1])*sign
max=2147483647
min=-2147483648
if num>max:
return max
elif num<min:
return min
else:
return num
runtime是56ms 好像在python里还可以