leetcode-07:Reverse Integer
看到题目后,首先想到的是将整形数转换为字符串,再利用字符串的reverse方法,但是对于负数,要特别处理一下。因为正常的输入,反转后可能就越界了,所以采取int-String-long(判断是否越界)-int的方法。
其次,第一提交,因为没考虑到int32的负边界值,-2147483648,它在取绝对值后也会越界,因此也要特殊处理。
java实现:
class Solution {
public String reverseString(int x){
String s=String.valueOf(x);
s=new StringBuffer(s).reverse().toString();
return s;
}
public int reverse(int x) {
if(x==-2147483648||x==2147483647){
return 0;
}
long y;
String s=reverseString(Math.abs(x));
y=Long.parseLong(s);
if(y<-2147483648||y>2147483647){
y=0;
return (int) y;
}
else if(x<0){
x=-(int)y;
}
else{
x=(int)y;
}
return x;
}
}
python实现:也是一样的思路
class Solution:
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
if x < 0:
y=-(self.reverse(-x))
else:
data = str(x)
reve_data = data[::-1]
y=int(reve_data)
if y>2147483647 or y<-2147483647:
y=0
return y
看了网上还有一些其他实现思路,目前也在学习中。
一个更简单的方法,java实现:
这种方法实现,代码简单,思路也清晰,不过运行时间的话,第一个java实现比这个更快一点点。