java用方法来判断一个数是否是回文数,是的话返回true,否则返回false

回文数:设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数。
1.偶数个的数字也有回文数,列如 124421
2.小数没有回文数

第一种方法:把数字转化为字符串,然后利用reverse方法来转置字符串,比较原来的字符串和转置后的字符串,如果相等就返回true,否则返回false。

public static boolean isPalindrome1(int x){
        //字符串转置
        String str=x+"";
        StringBuilder reversedX=(new StringBuilder(str)).reverse();
        return str.equals(reversedX.toString());
    }

第二种方法:根据回文数的对称性,判断前面一半数是否和后一半数相等。
如果相等就返回true,否则返回false。

public static boolean isPalindrome2(int x){
        //回文满足对称性
        //将数组转化为字符串 字符串在分割为字符数组
        //循环数组 头尾遍历比较
        if(x<0){
            return false;
        }
        char[] arr=String.valueOf(x).toCharArray();
        int len=arr.length;
        for (int i = 0; i < len/2; i++) {
            //比较对应位置值,判断对称性
            if(arr[i]!=arr[len-i-1]){
                return false;
            }
        }
        return true;
    }

第三种方法:取出每个位数的值,前面位数的值和后面位数的值相比较,如果相等就返回true,否则返回false。

public static boolean isPalindrome3(int x){
        //不转化为字符串 取出每一位的值
        //取首位和末位的值比较
        if(x<0){
            return false;
        }
        int  bit = (int) Math.log10(x);
        int div = (int) Math.pow(10, bit);
        while (x>0){
            //取出首位和末位
            int num1=x/div;
            int num2=x%10;
            if(num1!=num2){
                return false;
            }
            //去除首位和末位 处理除数
            x=(x%div)/10;
            div/=100;
        }
        //如果全部对称 到最后 x=0
        return true;
    }

第四种方法:利用每一个位数,求出原来的值,如果相等就返回true,否则返回false。

public static boolean isPalindrome4(int x) {
        if (x < 0) {
            return false;
        }
        int reverse = 0;
        int number = x;
        while (number != 0) {
            int bit = number % 10;
            number /= 10;
            reverse = reverse * 10;
            reverse += bit;
        }
        return reverse == x;
    }

主函数调用:由于是静态方法,所以可以直接调用

public static void main(String[] args) {
        boolean b1 = isPalindrome1(11);
        boolean b2 = isPalindrome2(121);
        boolean b3 = isPalindrome3(12321);
        boolean b4 = isPalindrome4(123321);
        boolean b5 = isPalindrome1(112);
        boolean b6 = isPalindrome2(1212);
        boolean b7 = isPalindrome3(123);
        boolean b8 = isPalindrome4(12331);
        System.out.println(b1);
        System.out.println(b2);
        System.out.println(b3);
        System.out.println(b4);
        System.out.println(b5);
        System.out.println(b6);
        System.out.println(b7);
        System.out.println(b8);
    }

运行结果:前面四个值都是回文数,后面四个值都不是回文数。
在这里插入图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值