8. 字符串转换整数 (atoi)

https://leetcode-cn.com/problems/string-to-integer-atoi/

解法一:套规则

测试用例真的变态

class Solution:
    def myAtoi(self, str: str) -> int:
        if not str: return 0
        tmp = str.strip()   #去除首尾空格
        if not tmp: return 0
        sign = 1    #正负号标志位
        if tmp[0] == '-':   #去掉符号
            sign = -1
            tmp = tmp[1:]   
            if not tmp: return 0
        elif tmp[0] == '+':
            sign = 1
            tmp = tmp[1:]
            if not tmp: return 0
        if not tmp[0].isnumeric():  #第一位不是数字
            return 0        
        #按空格切分,只取第0段
        res = tmp.split(' ')[0]   
        if not res.isnumeric():     #不全是数字
            for i in range(len(res)):
                if not res[i].isnumeric() and res[i] != '.':  #也不是小数点,截断
                    res = res[:i]
                    break
        #考虑浮点字符串,先转浮点数,再转整数      
        res = int(float(res))
        res *= sign     #乘上符号位
        #溢出处理
        if res < -2**31: return -2**31
        elif res > 2**31-1: return 2**31-1
        else: return res

最后更新于