LeetCode 9 - Palindrome Number

一、问题描述

Description:

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

判断一个整数是否是回文数,不要使用额外的空间。


二、解题报告

解题时我们需要注意一下几点:

  1. 负数不是回文数。
  2. 如果将整数转化成字符串来判断,则会使用额外的空间。
  3. 如果将整数直接逆转来判断,逆转后的整数可能会超出int的上界。

那么,该怎么做呢?

为了避免超出 int 的上界,我们可以只逆转一半。代码如下:

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0 || (x>0 && x%10==0)) // 负数与整十的情况
            return false;

        int sum = 0;
        while(x > sum)              // 逆转一半
        {
            sum = sum*10 + x%10;
            x = x/10;
        }

        return (x==sum) || (x==sum/10);
    }
};

注意,如果是偶数位的回文数,则x==sum;如果是奇数位的回文数,则x==sum/10





LeetCode答案源代码:https://github.com/SongLee24/LeetCode


posted @ 2015-05-13 22:53  神奕  阅读(121)  评论(0编辑  收藏  举报