LeetCode---回文数字判断

博主记录在LeetCode第二次打卡,题目是判断数字是否为回文数字。思路是先将数字分解成个位数存于数组并记录位数,再从数组两头向中间遍历比对。还分享了代码编写时的小心思,最后提到看到他人厉害的算法并标记。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记今天第二次在LeetCode打卡,今天的题目依旧是Easy等级的哈哈哈,毕竟怕做到难题怕死啃,然后搞坏自己的心情,今天的题目是判断一个数字是不是回文数字

思路

第一步:先把数字通过求余数的方式把它分解成一个个“个位数”,并把他们放在一个数组里面储存,并记录有多少位;
第二步:通过知道了有多少位就可以在数组里面进行左右两头同时向中间遍历,比对左右两边的数字是否相同,一旦不同就可以跳出

代码

class Solution {
    public boolean isPalindrome(int x) {
        int []a=new int[100];
        int s=x,i=0,count=0,left,right,flag=1;
        if(x<0)
            return false;
        if(x<10)
            return true;
        while(s!=0){
            a[i]=s%10;
            s=s/10;
            i++;
            count++;
        }
        left=0;
        right=count-1;
        while(left<right){
            if(a[left]!=a[right]){
                flag=0;
                break;
            }
            left++;
            right--;
        }
        if(flag==1)
            return true;
        else
            return false;
    }
}

小心思:
1、一开始不能还在纠结要不要写堆栈来用,但发现有点浪费就直接用数组了
2、最后一开始是直接return flag的,以为int会直接转boolean,结果忘了是直接打1或0才行

最后附上LeetCode的评价图,其实这数据感觉有点夸张哈哈哈

在这里插入图片描述

-------------------------------分界线---------------------------------------------------------------------------
刚写完这篇博文,就看到LeetCode的一个人写的算法好厉害,先mark下来

bool isPalindrome(int x)
{
    unsigned long int new = 0;
    unsigned long int current = x;

    while (current != 0)
    {
        new = (new * 10) + (current % 10);
        current /= 10;
    }

    if (x == new)
        return true;
    else
        return false;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值