9.力扣回文数解法

题目

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

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

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

示例 1:

输入:x = 121
输出:true
示例 2:

输入:x = -121
输出:false
解释:从左向右读,-121 。 从右向左读,121- 。因此它不是一个回文数。
示例 3:

输入:x = 10
输出:false
解释:从右向左读,01 。因此它不是一个回文数。

思路

首先明确,因为回文数是对称的,所以我们只需要测试该数的后一半和前一半是否相等
其次先排除负数(因为负数有符号)及其整百整十的数(例:100肯定不是回文数)
最后思考如何实施此方案,通过while来判断x以及其倒数的大小,一旦倒数大于x马上停止循环

代码

首先排除负数及其整百整十的数
           if(x<0||(x%10==0&&x!=0))//除掉x为负数或x为整十位的情况
           return false;
其次通过循环来将X的后一半赋值给re(倒数),一旦re大于X停止循环
           int re=0;//定义一个倒数
           while(x>re)
            {
                re=re*10+x%10;
                x/=10;
            }
最后返回结果,当X的数字长度为奇数是x==re/10 反之同理
return x==re||x==re/10;
整体代码
public class Solution {
    public bool IsPalindrome(int x) {
        
           if(x<0||(x%10==0&&x!=0))//除掉x为负数或x为整十位的情况
           return false;
           int re=0;//定义一个倒数
           while(x>re)
            {
                re=re*10+x%10;
                x/=10;
            }
            return x==re||x==re/10;

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值