Leetcode-字符串转换整数(atoi)
表示题目要求需要理解一下,好懵- -
大概意思是:输入一个字符串,让你找出其中的第一个连续的数字。如果字符串为空、找到的第一个非空格字符为字母就返回0,且找到的数字不能大于232-1、小于-232
方法
感觉这个题算法的成分好少,基本上是if-else加上python字符串的一些方法。用到的方法如下:
1.strip():移除左右两边的空白字符
2.isdigit():判断字符串是否为数字
class Solution:
def myAtoi(self, str):
"""
:type str: str
:rtype: int
"""
res_str = ''
new_str = str.strip() #strip()函数:移除左右两边的空白字符
if new_str == "": #判断新生成的字符串是否为空
return 0
if new_str[0] == '-' or new_str[0] == '+' : #如果第一个字符为‘-’或‘+’
res_str += new_str[0]
for i in range(1,len(new_str)):
if new_str[i].isdigit(): #isdigit()函数判断字符串是否为数字
res_str += new_str[i]
else:
break
if len(res_str) == 1: #如果只有+或者-就直接返回0
return 0
elif new_str[0].isdigit() :
res_str += new_str[0]
for i in range(1,len(new_str)):
if new_str[i].isdigit():
res_str += new_str[i]
else:
break
else:
return 0
res = int(res_str) #有可能结果是000123,需要前面加int转换为数字
INT_MIN = -pow(2, 31)
INT_MAX = pow(2, 31) - 1
if res < INT_MIN :
return INT_MIN
elif res > INT_MAX:
return INT_MAX
else:
return res