2018-05-11 507. Perfect Number

题意:给你一个数,判断是不是回文数。回文数:一个数从左读和从右读一样(注:最好不要将int转换为string)。
解题思路:
先判断该数是不是负数,如果是负数返回false;
思路一、可以使用一个map将位置与该位置的数对应起来,然后按照从两头向中间的顺序对比;
思路二、将该数的后半部分逆序后组成一个新数,然后对比该数的前半部分和后半部分是否相等(该数的位数为偶数),或前半部分等于后半部分除以10(该数的位数为基数)。前提是该数不能以0结尾,若以0结尾则肯定为非回文数。

class Solution {
public:
    bool isPalindrome(int x) {
        if(x < 0 || (x % 10 == 0) && x != 0)
            return false;
        int lastHalf = 0;
        while(x > lastHalf)
        {
            int num = x % 10;
            lastHalf = lastHalf * 10 + num;
            x /= 10;
        }
        return x == lastHalf || x == lastHalf / 10;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容