前往此题

解题思路

模拟法

  1. 将字符串分割成数组来去除空格符
  2. 用辅助变量sign来标记字符串中是否有符号*“-”*,如果有则为-1, 无则为1
  3. 接下来截取剩下的字符,对其中的数字进行拼接,遇到非数字则中断拼接并放弃后面的字符
  4. 最后判断临界值

代码

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))