009 回文数

官方答案

class Solution {
public:
    bool isPalindrome(int x) {
        // 排开负数和以0结尾的数的情况,因为0结尾的数反转后会缺少一位
        if(x<0)
            return false;
        if((x % 10==0) && x!=0)
            return false;
        // 翻转后半段,停止条件为后半段数大于等于前半段
        int x2=0;
        while(x>x2){
            x2 = x2 * 10 + x % 10;
            x = x / 10;
        }
        // 如果长度是偶数,则两者相等返回true;如果是奇数,中间的数字可以为任意
        return (x == x2) || (x == (x2 / 10));
    }
};

思路
1.转换为字符串。
2.考虑回转一半数字,注意奇数情况的特殊性。

你可能感兴趣的:(009 回文数)