reverse-integer(反转整型)

题目描述

Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
click to show spoilers.
Have you thought about this?
Here are some good questions to ask before coding. Bonus points for you if you have already thought through this!
If the integer’s last digit is 0, what should the output be? ie, cases such as 10, 100.
Did you notice that the reversed integer might overflow? Assume the input is a 32-bit integer, then the reverse of 1000000003 overflows. How should you handle such cases?
Throw an exception? Good, but what if throwing an exception is not an option? You would then have to re-design the function (ie, add an extra parameter).

反转的整数的数字。
例1:X = 123,返回321
例2:X = -123,返回-321
单击显示剧透。
你有没有想过这一点?
在写代码之前有一些很好的问题要问。如果你想到这些,给你点赞。
如果整数的最后一个数字是0,应该输出什么?即,例如10,100。
你有没有注意到,反向整数可能溢出?假定输入是32位的整数,则反转1000000003溢出。你应该如何处理这种情况?
抛出一个异常?很好,但如果抛出异常不是一种选择?那么你将不得不重新设计功能(即,添加一个额外的参数)。

解题思路

如果这里是123为例,分别对123求余和整除。123 % 10 = 3, 123 / 10 = 12。
溢出可以通过try catch方式处理,或者return 0。

AC代码

import java.util.InputMismatchException;

public class Solution  {
    public int reverse(int x) throws Exception {
        long res = 0; 
        while (x != 0) {
            res = res * 10 + x % 10;
            x = x / 10;
        }
        System.out.println(res);
        if(res >Integer.MAX_VALUE|| res < Integer.MIN_VALUE) throw new InputMismatchException();
        return (int)res;

    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Solution solution = new Solution();
        try {
            System.out.println(solution.reverse(1000000003));
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("This is not an integer!");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值