关于java:Java面试手册算法篇给定一个整数输出逆序数字

输入逆序数字相当于反转数字,比方1234,逆序后为4321,在反转数字时,须要留神反转后失去的数字是否会超过最大范畴,比方int最大值为2147483647,失常反转后的值是7463847412,然而曾经超出了int的范畴。

示例代码:

    private static long reverse(int number) {
        // 反转后的数字定义为long型,防止反转后超出了int的最大范畴
        long reversedNumber = 0;
        while (number != 0) {
            reversedNumber = reversedNumber * 10 + (number % 10);
            number = number / 10;
        }

        return reversedNumber;
    }

如果须要判断反转后的数字是否会超过整型的最大最小值,并且当反转后的数字超过时,返回0,那么只须要对反转后的数字增加一个判断,如下:

    private static int reverse2(int number) {
        long reversedNumber = 0;
        while (number != 0) {
            reversedNumber = reversedNumber * 10 + (number % 10);
            number = number / 10;
        }

        if (reversedNumber > Integer.MAX_VALUE || reversedNumber < Integer.MIN_VALUE) {
            return 0;
        }

        return Long.valueOf(reversedNumber).intValue();
    }

测试验证

    public static void main(String[] args) {
        System.out.println(reverse(1234));
        System.out.println(reverse(-1234));
        System.out.println(reverse(Integer.MAX_VALUE));
        System.out.println(reverse(Integer.MIN_VALUE));
        System.out.println(reverse2(Integer.MAX_VALUE));
        System.out.println(reverse2(Integer.MIN_VALUE));
    }

输入的后果如下:

4321
-4321
7463847412
-8463847412
0
0

更多无关Java面试相干的知识点能够关注【Java面试手册】小程序,波及Java根底、多线程、JVM、Spring、Spring Boot、Spring Cloud、Mybatis、Redis、数据库、数据结构与算法等。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理