给定一个有符号的32位整数x,返回x并反转其数字。如果反转x导致值超出有符号32位整数范围[-231,231-1],则返回0。
假设环境不允许存储64位整数(有符号或无符号)。
这是我的意见书
class Solution(object):
def reverse(self, x):
sp= str(abs(x))[::-1].lstrip("0")
ans= int(sp)
if x > 0 :
return ans
else:
return -1*ans
int()方法应该允许我传递一个字符串值(“12”),但它返回一个错误,指出它是int()的无效文本。
第3行中的变量sp是str而不是float,所以我不知道为什么它不在leetcode提交页面上运行,因为它在vscode上运行正常。
有没有我遗漏的评分准则?
这就是我得到的值错误
2条答案
按热度按时间fcy6dtqo1#
原始代码有两个问题:(1)它不能处理零,(2)问题描述中的范围检查丢失。
对于零,字符串表示为
"0"
. 但是打电话之后lstrip("0")
,它将是空字符串,其中int
我不接受。这可以通过对零进行特殊情况检查来解决。一个更简单的解决方案(由mark建议)是不要去掉前导零。对于范围检查,如果值超出范围,只需添加一个检查以返回零。
这是一个更新版本,两个补丁都已就位。注意:此版本省略了
strip("0")
调用,它修复了零的情况:这将正确处理所有测试用例。
a14dhokn2#
错误表示您尝试int()一个无字符串或字母非数字,因此请在int()之前检查变量sp
试试这个