边界如下:
1. 开头空格
2. 开头符号,可能-和+
3. 如果遇到非法字符,那么输出当前解析到的答案
4. 正数和负数范围越界
这题推荐的做法就是直接解析处理。
class Solution:
def myAtoi(self, s: str) -> int:
ls = list(s.strip())
if len(ls)==0: return 0
sign = -1 if ls[0] == '-' else 1
res, i, n = 0, 0, len(ls)
if ls[0] == '-' or ls[0] == '+': i+=1
while i<n and ls[i].isdigit():
res = res*10 + ord(ls[i]) - ord('0')
i+=1
return max(-2**31, min(sign * res,2**31-1))
一种parse的通用处理方法是确定有限状态机,但是这种方法在面试中编码难度过大,不建议使用,了解即可。