LeetCode-回文数

9. 回文数(简单)

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数

是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

例如,121 是回文,而 123 不是

题解1:最先能想到的解法当然是将整数转化成字符串,然后遍历分别从两端取数进行判断

class Solution {
    public boolean isPalindrome(int x) {
        String number=String.valueOf(x);
        char[] arr=number.toCharArray();
        int mid=arr.length/2;
        for(int i=0;i< mid;i++){
            if(arr[i]!=arr[arr.length-1-i]){
                return false;
            }
        }
        return true;
    }
}

如果不让转化成字符串处理也可以将数字拆解到集合里,即

题解2:

    public boolean isPalindrome(int x) {
        if(x<0){
            return false;
        }
        List<Integer> numberList=new ArrayList<>();
        int temp=x;
        int div=x;
        while(div!=0){
            temp=div%10;
            numberList.add(temp);
            div=div/10;

        }
        int mid=numberList.size()/2;
        for(int i=0;i<mid;i++){
            if(numberList.get(i) != numberList.get(numberList.size()-1-i)){
                return false;
            }
        }
        return true;
    }

其实还有一种更巧妙的办法,回文数的特性是将数颠倒后还等于原数,那么我们可以在循环里直接计算出颠倒数,判断颠倒数是否等于原数即可

题解3:

    public static boolean isPalindrome(int x) {
        if(x<0){
            return false;
        }
        int div=x;
        int revNumber=0;
        while(div!=0){
            revNumber=revNumber*10+div%10;
            div=div/10;
        }
        return x==revNumber;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值