题目链接:https://leetcode.com/problems/reverse-integer/
方法:无
思路:这道题目其实比较坑,按理来说挺简单的,但是他还有溢出时的特殊处理,一开始我都不知道,然后就跪了。之后的大部分时间都是在对付这个异常处理的情况。c++我借鉴了一种方法那就是如果出现溢出,那么之前反转的数字和最后的答案肯定不满足10倍关系,这样就可以判断是否溢出了。这个方法比较适合你忘记了32位数据多大的时候可以用,python就没这么多事了,直接用就行了。
难点:注意直接判定溢出的时候输入和输出均要进行检验。
c++
class Solution {
public:
int reverse(int x)
{
int num = 0;
int ans = 0;
int pre = 0;
while(x != 0){
num = x%10;
x /= 10;
pre = ans;
ans = ans*10+num;
}
if(ans/10 != pre)
return 0;
return ans;
}
};
python
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
def myreverse(x1):
s = str(x1)
l = list(s)
l.reverse()
s = "".join(l)
x2 = int(s)
return x2
if x <= -2147483648 or x >= 2147483647:
return 0
f = 1
if x < 0:
f = -1
x = -x
ans = myreverse(x)
if ans <= -2147483648 or ans >= 2147483647:
return 0
return f*ans
python代码居然比c++还多,真是耻辱啊,但是我个人觉得python这样写非常好懂,不是吗?