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实现:

扫描二维码关注公众号,回复: 3192970 查看本文章

这种方法实现,代码简单,思路也清晰,不过运行时间的话,第一个java实现比这个更快一点点。

猜你喜欢

转载自blog.csdn.net/orangefly0214/article/details/82530801