class Solution:
def strToInt(self, str: str) -> int:
str = str.strip() # 删除首尾空格
if not str:
return 0 # 字符串为空则直接返回
res, i, sign = 0, 1, 1
int_max, int_min = 0x7fffffff, -0x80000000
if str[0] == '-': sign = -1 # 保存负号
elif str[0] != '+': i = 0 # 若无符号位,则需从 i = 0 开始数字拼接
for c in str[i:]:
if not '0' <= c <= '9':
break # 遇到非数字的字符则跳出
res = 10 * res + ord(c) - ord('0') # 数字拼接
if res > int_max:
return int_max if sign == 1 else int_min # 数字越界处理
return sign * res
class Solution:
def strToInt(self, str: str) -> int:
res, i, sign = 0, 0, 1
int_max, int_min = 0x7fffffff, -0x80000000
if not str:
return 0
while str[i] == ' ':
i += 1
if i == len(str):
return 0
if str[i] == '-':
sign = -1
if str[i] in '+-':
i += 1
for c in str[i:]:
if not '0' <= c <= '9':
break
res = 10 * res + ord(c) - ord('0')
if res > int_max:
return int_max if sign == 1 else int_min
return sign * res
if __name__ == '__main__':
solution = Solution()
str = '-2147483649'
str = '-42'
str = ' '
res = solution.strToInt(str)
print(res)