8. 字符串转换整数 (atoi)
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数。
函数 myAtoi(string s) 的算法如下:
空格:读入字符串并丢弃无用的前导空格(" ")
符号:检查下一个字符(假设还未到字符末尾)为 '-' 还是 '+'。如果两者都不存在,则假定结果为正。
转换:通过跳过前置零来读取该整数,直到遇到非数字字符或到达字符串的结尾。如果没有读取数字,则结果为0。
舍入:如果整数数超过 32 位有符号整数范围 [−231, 231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于−2^31的整数应该被舍入为 −2^31 ,大于2^31 − 1的整数应该被舍入为 2^31 − 1 。
返回整数作为最终结果。
🚩 思路:第一步去除字符串左侧的空格,使用库函数
s.lstrip();第二步判断符号;第三步遍历字符串,如果有数字,则累加起来,如果没有的话则返回
class Solution:
def myAtoi(self, s: str) -> int:
s = s.lstrip() # 去除左边的空格
res = 0
i = 0
sign = 1
if i < len(s) and (s[i] == '-' or s[i] == '+'): # 符号判断
sign = -1 if s[i] == '-' else 1
i += 1
while i < len(s) and s[i].isdigit():
res = res * 10 + int(s[i])
if res * sign > 2**31 - 1: #边界判断
return 2**31 - 1
if res * sign < -2**31:#边界判断
return -2**31
i += 1
return res*sign

浙公网安备 33010602011771号