关于java:Java面试手册算法篇给定一个数字请判断是否为回文数字

6次阅读

共计 1564 个字符,预计需要花费 4 分钟才能阅读完成。

在答复这个问题之前,首先得分明什么是回文数字,回文数字有什么特色。

回文数字:设 n 是一任意自然数,若将 n 的各位数字反向排列所得自然数 n1 与 n 相等,则称 n 为一回文数。艰深地说,回文数字相似于咱们在数学上学习的轴对称图形,比方 111、12321 是回文数,而 1234 不是回文数,小数没有回文数。

理解了回文数字的定义之后,对于非凡情景的数字能够间接得出结论,比方:

  • 正数不是回文数,因为正数前有负号 –;
  • 小数没有回文数;
  • 除 0 外,个位数为 0 的数字不是回文数;
  • 0- 9 都是回文数字;

如何通过代码实现呢?常见的思路有两种:

  • 把数字反转,比拟反转后的数字与原数字是否相等(须要留神反转后的数字范畴溢出问题);
  • 把数字转换为字符串,通过比拟字符来判断是否为回文数;

示例 1— 数字反转

    private static boolean isPalindrome(int number) {if (number < 0) {return false;}

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

        return reversedNumber == number;
    }

其中反转数字 reversedNumber 采纳 long 型,防止数字反转后范畴溢出,比方 int 最大值为 2147483647,失常反转后的值是 7463847412,然而曾经超出了 int 的范畴。

示例 2 — 数字转换为字符串

    private static boolean isPalindrome(int number) {String numStr = String.valueOf(number);
        
        int low = 0;
        int high = numStr.length() - 1;
        while (low < high) {if (numStr.charAt(low) != numStr.charAt(high)) {return false;}
            low++;
            high--;
        }

        return true;
    }

下面的代码采纳 while 循环实现的,也能够应用 for 循环来实现,如下:

    private static boolean isPalindrome(int number) {String numStr = String.valueOf(number);

        int length = numStr.length();
        for (int low = 0, high = length - 1; low < high; low++, high--) {if (numStr.charAt(low) != numStr.charAt(high)) {return false;}
        }

        return true;
    }

触类旁通:如果给定一个字符串,又该如何断定是否为回文字符串呢?下面的代码示例曾经给出了相应的解决思路。

测试验证

    public static void main(String[] args) {System.out.println(isPalindrome(0));
        System.out.println(isPalindrome(1));
        System.out.println(isPalindrome(101));
        System.out.println(isPalindrome(12321));
        System.out.println(isPalindrome(1147483647));
    }

输入的后果如下:

true
true
true
true
false

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

正文完
 0