leetcode-07:Reverse Integer

本文详细介绍了如何在Java和Python中实现整数反转算法,包括处理负数和越界问题,提供了一种简单且高效的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看到题目后,首先想到的是将整形数转换为字符串,再利用字符串的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实现比这个更快一点点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值