题目描述:
实现atoi函数
要注意的问题:
①atoi会自动去除字符串前面的空格
②遇到不是数字和加减号的字符就截断
③注意有多个正负号的情况
④ord函数可以把字符转成ascii码
class Solution(object):
def myAtoi(self, str):
INT_MAX = 2147483647
INT_MIN = -2147483648
num=0
str=str.strip()
length=len(str)
if length>0:
neg_flag=0
pos_flag=0
flag=0
for i in range(0,length):
if str[i]>='0' and str[i]<='9':
t=10**(length-1-i)
a=ord(str[i])-ord('0')
num=num+a*t
elif str[i]=="-":
neg_flag+=1
flag+=1
elif str[i]=="+":
pos_flag+=1
flag+=1
else:
t=10**(length-i)
num=num/t
break
if flag>1:
num=0
elif neg_flag==1 and str[0]=="-":
num=-num
elif pos_flag==1 and str[0]=="+":
num=num
else:
num=num
else:
num=0
if num>INT_MAX:
return INT_MAX
elif num<INT_MIN:
return INT_MIN
else:
return num
if __name__=="__main__":
sol=Solution()
print sol.myAtoi("-001242a")