一、思路
- 首先输入可能会有空格,所以先去掉空格
- 去掉空格后要考虑空字符串情况,返回0
- 要考虑字符串首位是否会出现正负号,flag作为正号标记,如果首位为符号位那么就需要切片只考虑符号位后的字符串
- 开始转换成数字,for遍历字符串,如果每位字符为数字0~9对应的字符,则利用ord内置函数进行转换,否则,题目已经说明只要遇到非数字就可以break
- 结果太大或者太小超过int限制就要返回特定数字 2147483647 或者 -2147483648
- 返回对应数值
二、python实现
class Solution(object):
def myAtoi(self, str):
"""
:type str: str
:rtype: int
"""
str = str.strip()
strtoNum = 0
if len(str) == 0:
return strtoNum
flag = True
if str[0] == '+' or str[0] == '-':
if str[0] == '-':
flag = False
str = str[1:]
for char in str:
if char >= '0' and char <= '9':
strtoNum = strtoNum * 10 + ord(char) - ord('0')
if char < '0' or char > '9':
break
if strtoNum > 2147483647:
if flag == False:
return -2147483648
else:
return 2147483647
if not flag:
strtoNum = - strtoNum
return strtoNum