java一个5位数,判断它是不是回文数,即12321是回文数,个位与万位相同,十位与千位相

q松_松q

关注

阅读 86

2023-07-14

回文数的判断与解析——Java实现

什么是回文数

回文数是指从左到右和从右到左读取均相同的数字。比如12321就是一个回文数,它的个位与万位相同,十位与千位相同。

回文数的判断方法

要判断一个数是否为回文数,最直接的方法是将该数转化为字符串,然后判断字符串是否为回文串。但是这种方法需要额外的空间来存储字符串,效率较低。

在本文中,我们将介绍一种比较高效的方法来判断一个数是否为回文数,通过对数的位数进行逐位拆解和比较。

Java实现

下面是使用Java语言实现回文数判断的示例代码:

public class Palindrome {
    public static boolean isPalindrome(int num) {
        if (num < 0 || (num % 10 == 0 && num != 0)) {
            return false;
        }

        int reversedNum = 0;
        while (num > reversedNum) {
            reversedNum = reversedNum * 10 + num % 10;
            num = num / 10;
        }

        return num == reversedNum || num == reversedNum / 10;
    }

    public static void main(String[] args) {
        int num = 12321;
        if (isPalindrome(num)) {
            System.out.println(num + "是回文数");
        } else {
            System.out.println(num + "不是回文数");
        }
    }
}

代码解析

以上代码中,我们定义了一个名为Palindrome的类,其中包含了一个静态方法isPalindrome用来判断一个整数是否为回文数。

首先,我们对输入的数进行了一些特殊情况的判断:

  • 如果数为负数,则一定不是回文数,因为负数的符号会破坏回文性质。
  • 如果数的个位为0,并且该数不为0,也不可能是回文数,因为回文数的最高位不可能为0。

接下来,我们使用两个变量reversedNumnum来进行位数逐步拆解和比较。reversedNum用来存储反转后的数,初始值为0。num则是每次迭代后的剩余数。

在循环中,我们将reversedNum乘以10,并加上num除以10的余数,以此来反转num的最低位。然后,将num除以10,以便继续迭代。

循环结束后,我们需要判断numreversedNum的关系,以确定是否为回文数。如果numreversedNum相等,或者numreversedNum除以10之后相等(对于奇数位数的数,中间的那一位不需要进行比较),则说明该数是回文数。

main方法中,我们使用了一个示例数12321来进行测试。如果该数是回文数,则输出12321是回文数;否则输出12321不是回文数

总结

本文介绍了使用Java语言判断一个数是否为回文数的方法,通过对数的位数进行逐位拆解和比较,避免了转化为字符串的额外开销。希望本文的内容能对你理解回文数的判断方法有所帮助。

完整代码请参考:[Palindrome.java](

精彩评论(0)

0 0 举报