题目描述:
解题方法:
1.使用strip()去掉字符串前后空格
2.判断是否需要对字符串进行遍历
1>字符串为空,直接返回0
2>长度为1,若字符串为非数字,直接返回0,为数字,返回对应数字 使用isdigit()来判断字符是否为数字(是返回True,否为False)
3>长度大于1,首字符为-或+,但第二位不是数字,则返回空,其余情况进行字符串的循环
3.字符串遍历:
1>因为判断字符串是否需要遍历时已经对第一个字符进行了判断,所以遍历从第二个字符开始
2>遍历到的字符为非数字,则终止遍历,此时已找到对应的数据
4.对获取到的所有字符进行处理 即nums
1>首先判断nums是否为空,空则直接返回0
2>得到的字符串的首字符为0且是正整数,则需要进行去0处理
3>将得到的字符串进行转换,转换成数字,接着对数据按题目要求进行输出
关于strip()、isdigit()方法,具体看菜鸟教程,菜鸟教程Python 的字符串内建函数部分
代码:
class Solution(object):
def myAtoi(self, s):
"""
:type s: str
:rtype: int
"""
nums = ''
s = s.strip()
if len(s) == 0:
return 0
elif len(s)==1:
if s[0].isdigit():
return int(s)
return 0
else:
if (s[0] =='-' or s[0] =='+') and s[1].isdigit():
nums +=s[0]
elif s[0].isdigit():
nums+=s[0]
else:
return 0
for i in range(1,len(s)):
if s[i].isdigit():
nums+=s[i]
continue
else:
break
if len(nums)<=0:
return 0
elif len(nums)==1:
return int(nums)
else:
if nums[0] =='0':
nums =nums[1:]
nums = int(nums)
if nums< pow(-2,31):
return pow(-2,31)
elif nums>pow(2,31)-1:
return pow(2,31)-1
else:
return nums