LeetCode.9 回文数

题目链接:

回文数

分析:

1. 首先判断该数字num有多少位

此处用一个循环,赋一个值div,用给出的数字num除以div,然后不断地给div乘10,直到div满足条件

2. 计算出最高位的数字left

用给出的数字num除以div(也就是num的位数),就可得到最高位left

3. 计算出最低位的数字right

用给出的数字对10取余,就可以计算出最低位的数字right

4. 此时应判断最高位是否等于最低位 left ?= right

如果不等于返回false

5. 继续判断除最高位最低位里面的数字,更新num

此时新的num应该是除减去最高位最低位的数字后的数字

如 45678,减去最高位4和最低位8后,更新后的num应该是567

具体实现为 num = (num - left*div) / 10

然后进行新一轮的判断

代码实现如下:

public class HuiWen {
    public boolean isPalindrome(int x) {
        if (x < 0)
            return false;
        int num = x;
        int div = 1;
        // 计算 num的位数
        while (num / div >= 10) {
            div *= 10;
        }
        while (num != 0) {
            int left = num / div;
            int right = num % 10;
            if (left != right)
                return false;
            // 更新 num
            num = (num - left*div) / 10;
            // 上面已经减去最左边和最右边的数字了,
            // 所以位数相应的要小两位,即除100
            div /= 100;
        }
        return true;
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值