【Leetcode】【python】String to Integer (atoi) 字符串转整数 (atoi)

题目大意

写出函数,将str转为int
需要考虑所有可能的输入情况

解题思路

将情况都考虑进去

  1. 空字符串:返回
  2. 从前往后遍历,发现空格,i++
  3. 若有符号,存储sign(flag)
  4. 字符串转整数,result = result * 10 + ord(str[i]) - ord('0'),如果溢出直接返回MAX或MIN

    代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Solution(object):
def myAtoi(self, str):
"""
:type str: str
:rtype: int
"""
INT_MAX = 2147483647
INT_MIN = -2147483648
result = 0

if not str: # 不是str返回0
return result

i = 0
while i < len(str) and str[i].isspace(): # 判断空格
i += 1

sign = 1 # 若有‘-’结果相反数
if str[i] == "+":
i += 1
elif str[i] == "-":
sign = -1
i += 1

while i < len(str) and str[i] >= '0' and str[i] <= '9':
if result > (INT_MAX - (ord(str[i]) - ord('0'))) / 10:
return INT_MAX if sign > 0 else INT_MIN
result = result * 10 + ord(str[i]) - ord('0')
i += 1

return sign * result

总结