当前位置:   article > 正文

[数学][双指针]leetcode9:回文数(easy)_指针回文数

指针回文数

题目:
在这里插入图片描述


题解:

  • 思路:反转后半部分数字,不反转整个数字来防止反转后的结果溢出。对于长度为奇数的数字,最后反转后的后半部分数字会比前半部分多一位,因此需要判断 x 与 y/10 是否相等即可;对于长度为偶数的数字,x y 的长度最后会相等,需要判断 x 与 y 是否相等即可。用 x <= y 来表示表示已经处理一半的数字了,因为长度越长,数字值越大。

代码如下:

class Solution {
public:
    // 反转后面一半的数字:只有前半段数字小于等于后半段数字时,表示前半段的数字比后半段数字少一位或位数相等
    bool isPalindrome(int x) {
        // 负数和大于0且末位为0的数字直接排除
        if(x<0||(x!=0&&x%10==0))return false;
        int y=0;
        // y表示后半部分反转后的数字
        while(x>y){
            y=y*10+x%10;
            x/=10;
        }
        return x==y/10||x==y;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号