class Solution(object):
def myAtoi(self, s):
"""
:type s: str
:rtype: int
1.指针for循环,如果读到空格舍去继续往前读,如果遇到正负号把符号记下来,马上确定下一个字符是不是数字;
2.如果是数字一直入列表直到不是数字为止;
3.列表转成数字;
4.数字乘以符号(注意这里其实可以有很多符号,不过题目只要求一个,那就读到一个符号马上break循环,如果允许很多符号可以for循环一直读,每读到一个+给符号*1,每读到一个-给符号乘-1)
5.检验数字范围-2**31~2**31-1
"""
new_str=[]
i=0
list_1=['1','2','3','4','5','6','7','8','9','0']
dict = {'1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '0': 0}
new_list='0'#用来读入数字的列表
pius_minus=1#符号位,甚至可以通过读多个符号进行符号矫正
for i in range(len(s)):#如果有空格先去掉空格
if s[i]==' ':
pass
elif s[i]=='+':
pius_minus=1
i += 1
break
elif s[i]=='-' :#其实如果读到多个’-‘可以pius_minus=(-1)*pius_minus,然后继续循环,你懂我意思吧?
pius_minus=-1
i += 1
break
else:
break
if i==len(s):
pass
elif s[i] in list_1:#如果在数字里开始读入,直到没有数字
for j in range(i,len(s)):
if s[j] in list_1:
new_list=new_list+s[j]
else:#读不到数字了
break
else:#一开始(空格和符号结束)就没有数字
pass
sum=0#用来装str2int的结果
for k in new_list:
sum = sum * 10 + dict.get(k)
final_sum=sum*pius_minus
if final_sum>2**31-1:#检验范围是否超过4个字节
final_sum=2**31-1
elif final_sum<-2**31:
final_sum=-2**31
else:
pass
return final_sum
今天两道题,中秋快乐吧