题目大意:给定一个整型(即int),判断其是否为回文数.

关键字:编程能力

题目描述

Determine whether an integer is a palindrome. Do this without extra space.

解法

首先要注意的是,题目中的“Do this without extra space.”其实是存在问题的,并不是说不能多声明一些int之类,只是说不能声明string,array一类的数组类型。

于是便只需要考虑一些特殊情况:

一种是负数,对于负数,由于“-”的存在,是不可能为回文数的,可以直接判断。

另一种则是溢出情况,这里直接使用long来进行存储即可,当然还可以在翻转的时候只翻转一半来进行判断。

class Solution {
public:
    bool isPalindrome(int x) {
        // 负数肯定不为回文数
        if (x < 0) return false;
        // 将其反过来存放
        long y = 0, z = x;
        while (x > 0) {
            y = y * 10 + x % 10;
            x = x / 10;
        }
        // 返回判断结果
        return y == z;
    }
};

登录发表评论 注册

反馈意见