1、题目如下:
2、个人Python代码实现如下:
这里可以看到,解答错误很多次,实际上就是对于题目的条件读的不够细,导致很多边界值的用例跑不过。而且个人习惯极其不好,没有输入各种可能的输入进行调试,而是直接提交代码,这样的话,其实在考试的时候很难去发现是哪里出了问题。
下图是用于对应代码,和题目中的要求:
代码如下:
class Solution:
def myAtoi(self, s: str) -> int:
temp = s.lstrip() #将字符串左方空格去掉
res_temp = "" #临时变量,将字符串中的数字加入该变量,最后赋值给输出
res = 0 #输出变量
flag = "" #记录字符串s是否含有正负符号
#判断第一个字符是否为正负号,如果是,将第一个字符赋值给flag,并在s中删除第一个字符
if len(temp) > 1:
if temp[0] == "+" or temp[0] == "-":
flag = temp[0]
temp = temp[1:]
for i in temp: #遍历字符串s,如果字符为数字,则拼接到res_temp,反之,退出循环
if i.isdigit():
res_temp += i
else:
break
if res_temp:
if int(res_temp) >= pow(2, 31):
if flag == "-":
res_temp = str(pow(2, 31))
else:
res_temp = str(pow(2, 31) - 1)
res = int(flag + res_temp)
return res