Java判断任意一个数是否是回文数的2种简单写法

第一种:把将要判断的数从尾部逆序依次取出并形成一个新的字符串,用新的字符串与原字符串进行比对即可。

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        String s1 = "";
        for (int i = s.length()-1;i >= 0;i--){
            s1 += s.charAt(i);
        }
        System.out.println(s.equals(s1));
    }
}

第二种:利用StringBuilder的reverse()函数,该函数可直接将StringBuilder对象逆序。我们先将原StringBuilder对象转换成字符串1,再调用reverse()函数将新StringBuilder对象转换成字符串2,比较字符串1和2即可。

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringBuilder s = new StringBuilder(sc.next());
        String a = String.valueOf(s);
        String b = String.valueOf(s.reverse());
        System.out.println(a.equals(b));
    }
}
Java中,可以通过多种方式实现判断一个是否是回文数回文数是指正读和反读都相同的字,例如 `121` 或 `12321`。以下是一种常见的实现方法,它通过反转字并与原字进行比较来判断是否为回文数。 ### 实现方法 ```java public class PalindromeChecker { public static boolean isPalindrome(int num) { // 负不是回文数 if (num < 0) { return false; } // 保存原始字,用于后续比较 int original = num; int reversed = 0; // 反转字 while (num > 0) { int digit = num % 10; // 获取最后一位字 reversed = reversed * 10 + digit; // 将字拼接到反转后的结果 num /= 10; // 去除最后一位字 } // 比较原始字与反转后的字 return original == reversed; } // 示例用法 public static void main(String[] args) { int testNum1 = 121; int testNum2 = -121; int testNum3 = 12321; System.out.println(testNum1 + " 是回文数吗? " + isPalindrome(testNum1)); // true System.out.println(testNum2 + " 是回文数吗? " + isPalindrome(testNum2)); // false System.out.println(testNum3 + " 是回文数吗? " + isPalindrome(testNum3)); // true } } ``` ### 代码解析 - **负处理**:负不是回文数,因为负号只出现在字的一侧。 - **反转字**:通过取模和除法操作逐步提取字的最后一位,并将其拼接到反转后的结果中。 - **比较结果**:将反转后的字与原始字进行比较,如果相等,则该字是回文数。 ### 扩展:处理大或特殊情况 如果需要处理非常大的整(例如 `long` 类型),可以将变量类型改为 `long` 并进行相应的调整。此外,如果需要处理浮点的回文判断,可以先将浮点转换为字符串,并去除小点后进行比较。 ### 相关问题 1. 如何在Java判断一个字符串是否是回文? 2. 如何在Python中实现回文数的检测? 3. 如何优化回文数检测算法以减少时间复杂度? 4. 如何判断一个字的二进制表示是否是回文的? 5. 如何处理包含非字字符的回文数检测?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值