9. 回文数

思路:
这道题啊,直接通过取余数反转数再对比即可。
代码:

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0) return false;
        long a = x;
        long res = 0;
        while(a!=0){
            res = res*10 + a%10;
            a = a/10;
        }
        if(x == res) return true;
        return false;
    }
};

这里可以优化的,因为是回文数,所以我们只需要反转一半即。这里有两种情况,偶数个位,和奇数个位。
偶数个位只需要取余取位数一半的次数即可,奇数我们需要取一半加中间一位,这时候我们将技术情况得到的反转数除以10即可。
因为最低位为0,肯定不是回文数,因为高位不可能为0,所以我们要排除x%10==0的情况。
代码:

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0||(x%10==0&&x!=0)) return false;
        long res = 0;
        while(x>res){
            res = res*10 + x%10;
            x = x/10;
        }
        return x==res||x==res/10;
    }
};
posted @ 2021-05-25 23:35  Mrsdwang  阅读(49)  评论(0编辑  收藏  举报