题解 | #把字符串转换成整数(atoi)#
把字符串转换成整数(atoi)
https://www.nowcoder.com/practice/d11471c3bf2d40f38b66bb12785df47f
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param s string字符串
# @return int整型
# 屎山,全是边界
class Solution:
def StrToInt(self , s: str) -> int:
# write code here
s = s.strip()
i = 0
n = len(s)
if n == 0:
return 0
if n == 1:
return eval(s) if s.isdigit() else 0
else:
if s[0] != "+" and s[0]!="-" and s[0].isalpha():
return 0
else:
start = 0
news = ""
while s[start] == "+" or s[start] == "-" or s[start] == " ":
news = s[start]
start += 1
if start != 1:
return 0
for i in range(start, n):
if s[i].isdigit():
news += s[i]
else:
break
i,m = 0,len(news)
if news[0] == "-":
i = 1
while m > 1 and i < m-1:
if news[i] == '0':
i += 1
else:
break
cur = -eval(news[i:]) if news[0] == "-" else eval(news[i:])
if cur <= -2**32:
return -2147483648
elif cur >= 2**31 - 1:
return 2147483647
else:
return cur

