解题思路
模拟法
- 将字符串分割成数组来去除空格符
- 用辅助变量
sign
来标记字符串中是否有符号*“-”*,如果有则为-1
, 无则为1
。 - 接下来截取剩下的字符,对其中的数字进行拼接,遇到非数字则中断拼接并放弃后面的字符
- 最后判断临界值
代码
class Solution:
def myAtoi(self, s: str) -> int:
s = s.lstrip()
if not s: return 0
sign = -1 if s[0] == '-' else 1
if sign == -1 or s[0] == "+":
s = s[1:]
d = 0
for i in s:
if i.isdigit():
d *= 10
d += ord(i) - 48
else: break
return max(-2**31, min(sign*d, 2**31-1))