LeetCode专栏L007_Reverse_Integer

问题描述:
Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

中文大意:
反转数字。注意:超出范围则返回0。

解题思路:
普通解法,略。

代码:

package LeetCode;

import java.util.Scanner;

public class L007_Reverse_Integer {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int x = in.nextInt();
        L007_Reverse_Integer rt = new L007_Reverse_Integer();
        System.out.println(rt.reverse(x));
    }

    public int reverse(int x){
        if(x>Integer.MAX_VALUE)
            return 0;
        boolean flag = true;//是否为正数,true:是正数
        if(x<0){
            x = Math.abs(x);
            flag = false;
        }
        int rx=0;
        System.out.println(Integer.MAX_VALUE);
        while(x>0){
            //下面这个判断放在此处,而不是在30行rx计算完毕后判断rx>Integer.MAX_VALUE
            //是因为rx超出也不会大于等于Interger.MAX_VALUE
            //所以要在加之前,进行巧妙变换地判断
            //判断上一次加的数,是否大于最大值减去即将要加的数,即可判断这一次加之后会不会超过最大值
            if(rx>(Integer.MAX_VALUE - x % 10) / 10)//rx*10+x%10>Integer.MAX_VALUE
                return 0;
            rx = rx*10 + x%10;
            //if(rx>Integer.MAX_VALUE)//输入1534236469时不通过
            //  return 0;
            x /=10;
        }
        if(flag)
            return rx;
        else return -rx;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值