java中如何判断一个整数是否是回文数

发布时间:2022-01-17 14:16:32 作者:清风
来源:亿速云 阅读:256

Java中如何判断一个整数是否是回文数

在编程中,判断一个整数是否是回文数是一个常见的问题。回文数是指正序和倒序读都相同的数。例如,121 是一个回文数,而 123 不是。本文将介绍如何在 Java 中判断一个整数是否是回文数,并提供几种不同的实现方法。

方法一:将整数转换为字符串

最简单的方法是将整数转换为字符串,然后比较字符串与其反转后的字符串是否相等。以下是实现代码:

public class PalindromeNumber {
    public static boolean isPalindrome(int x) {
        String str = Integer.toString(x);
        String reversedStr = new StringBuilder(str).reverse().toString();
        return str.equals(reversedStr);
    }

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

代码解析

  1. 将整数 x 转换为字符串 str
  2. 使用 StringBuilderreverse() 方法反转字符串。
  3. 比较原字符串和反转后的字符串是否相等。

优点

缺点

方法二:反转整数的一半

另一种方法是通过数学运算反转整数的一半,然后比较反转后的部分与原数的另一半是否相等。以下是实现代码:

public class PalindromeNumber {
    public static boolean isPalindrome(int x) {
        // 特殊情况处理
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        int reversedHalf = 0;
        while (x > reversedHalf) {
            reversedHalf = reversedHalf * 10 + x % 10;
            x /= 10;
        }

        // 当数字长度为奇数时,去掉中间的数字
        return x == reversedHalf || x == reversedHalf / 10;
    }

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

代码解析

  1. 处理特殊情况:如果 x 是负数或者以 0 结尾且不为 0,则 x 不是回文数。
  2. 反转整数的一半:通过循环将 x 的最后一位数字依次添加到 reversedHalf 中,同时将 x 除以 10。
  3. 比较反转后的部分与原数的另一半是否相等。如果 x 的长度为奇数,去掉中间的数字后再比较。

优点

缺点

方法三:使用栈

还可以使用栈来判断一个整数是否是回文数。将整数的每一位数字压入栈中,然后依次弹出并与原数的每一位进行比较。以下是实现代码:

import java.util.Stack;

public class PalindromeNumber {
    public static boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }

        String str = Integer.toString(x);
        Stack<Character> stack = new Stack<>();

        for (char c : str.toCharArray()) {
            stack.push(c);
        }

        for (char c : str.toCharArray()) {
            if (c != stack.pop()) {
                return false;
            }
        }

        return true;
    }

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

代码解析

  1. 将整数 x 转换为字符串 str
  2. 将字符串的每个字符压入栈中。
  3. 依次弹出栈中的字符并与原字符串的字符进行比较。

优点

缺点

总结

本文介绍了三种在 Java 中判断一个整数是否是回文数的方法。每种方法都有其优缺点,选择哪种方法取决于具体的应用场景和性能要求。对于大多数情况,方法二(反转整数的一半)是最优的选择,因为它既高效又不占用额外的空间。

推荐阅读:
  1. java怎么判断字符串是否是整数
  2. java中判断字符串是否是整数的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:java中如何查看最长公共前缀

下一篇:vue如何用Echarts画柱状图

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》