9. 回文数

 我们只进行一半的反转

用revertednumber保存反转的数字

两种情况:

  • 奇数:有一个中位数。假如有5位数字12321我们就运算3次(n/2+1次),让revertednumber=123,而x此时=12
  • 偶数:假如6位数字123321刚好得到了revertednumber = 123 此时x=123
class Solution {
public:
    bool isPalindrome(int x) {
        //x<0不是回文数
        // 最后一位是0,第一位也必须是0
        if(x<0 || (x%10==0 && x!=0)){
            return false;
        }

        int revertedNumber = 0;
        while(x > revertedNumber){
            // 如果是偶数执行n/2次,奇数n/2+1次
            //                  123321   1234321
            // x                123      123
            // revertedNumber   123      1234
            revertedNumber = revertedNumber * 10 + x % 10;
            x /= 10;
        }
        return x == revertedNumber || x==revertedNumber/10;
    }
};

时间复杂度O(lon2 n)

空间复杂度O(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值