LeetCode——7.整数反转

题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。如果转化后溢出了,就返回0

思路:
1.利用栈来进行反转
2.转化为字符串反向遍历
3.利用StringBuffer的reverse方法。
这里只展示第三种代码[前面两种大概原理都一样,主要是判定那一块]:
代码:

class Solution {
    public int reverse(int x) {
        if(x>=0)
        {
            StringBuffer a=new StringBuffer(""+x);
            String b=a.reverse().toString();
            long result=Long.parseLong(b);
            if(result>(long)Integer.MAX_VALUE)
                return 0;
            return (int)result;
        }
        else
        {
            if(x==Integer.MIN_VALUE)//最小负数再按照下面的步骤处理会溢出
                return 0;

            StringBuffer a=new StringBuffer(Math.abs(x)+"");//先转化为正整数
            String b=a.reverse().toString();
            long result=Long.parseLong('-'+b);//转化为负数
            if(result<(long)Integer.MIN_VALUE)
                return 0;
            return (int)result;
        }
    }
}

经过了这么久,我终于找出了我很久很久以前的bug。虽然这就是一道简单题,也确实不难。但是我七个月以前卡在这里,百思不得其解。需要判定最小负数,因为我下面是先把他转化为正整数的,这样,最小负数一转,还是本身【最大正整数加1又回到了最小负数,所以相当于没转】。。。。

 if(x==Integer.MIN_VALUE)//最小负数再按照下面的步骤处理会溢出
                return 0;

在这里插入图片描述
总结:做题什么的,要非常非常主要界限,前几天的实验报告就吃了亏,这里也是同样的毛病。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值