整数反转--------easy

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
利用字符串解决,先上代码
public int reverse(int x) {
        String str = Integer.toString(x);
        int z = 0;

        if (str.indexOf("-") != 0) {
            StringBuffer str1 = new StringBuffer(str);
            StringBuffer y = str1.reverse();
            String y1 = y.toString();
            long zzz = Long.valueOf(y1);
            if (zzz <= Math.pow(2, 31)) {
                z =(int)zzz;
            }
        } else {
            StringBuffer str2 = new StringBuffer(str);
            StringBuffer y = str2.replace(0, 1, "");
            y = y.reverse();
            String y1 = y.toString();
            long zz = Long.valueOf(y1);
            if (zz < Math.pow(2, 31)) {
                z =(int)zz * (-1);
            }
        }

       return z;
    }
// -123 123 321 -321

解决思路:
先想着将整数转换成string型然后利用reverse方法进行反转。
判断—>反转—>转成long型(如果转成int可能会越界)
1.先判断该整数是正数还是负数,负数的话要在最后乘个-1
2.利用reverse()方法将字符串进行反转
3.转成long型
4.判断long型的值是否超出了整型的范围


数学方法解决
public int reverse(int x) {
        /**
         * 1.先缕清思路 2.反转要做的是什么 3.eg:x=123; 思路:利用%求出个位,第一次是3 求出的个位每次*10 + 下一次求出的个位
         * 遇到的第一个问题:初始值 rev = 0
         * 
         */
        long rev = 0;
        final int MAX = Integer.MAX_VALUE;
        final int MIN = Integer.MIN_VALUE;
        while (x != 0) {
            rev = rev * 10 + x % 10;
            x = x / 10;
        }
        // return (((int) rev) != rev) ? 0 : (int) rev;
        return (int) rev > MAX || (int) rev < MIN ? 0 : (int) rev;
    }

注意范围问题就没什么了,还有就是思路,刚开始没想法到这个方法。

请各位大佬指出我的错误,小白求指教,您指出一个问题我就进步一丢丢,谢谢

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值