首页 > 其他 > 详细

9. 回文数

时间:2021-05-26 09:23:20      阅读:27      评论:0      收藏:0      [点我收藏+]

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

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;
    }
};

9. 回文数

原文:https://www.cnblogs.com/Mrsdwang/p/14811473.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!