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
最后更新于