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;
    }
};
    原文作者:alexssssu
    原文地址: https://www.jianshu.com/p/edfec6a374c4
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞