码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 9. Palindrome Number

时间:2016-09-19 19:21:02      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

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

判断一个数是否是回文数,不能用额外的空间

我第一次做的时候,没有考虑到不能用额外的空间(空间复杂度为(n)),用了一个字符串来保存数字,而且题目的设定是

负数不是回文数

class Solution {
public:
    bool isPalindrome(int x) {
        string s;
        if(x<0)return false;
        while (x)
        {
            s.push_back(x % 10+48);
            x /= 10;
        }
        for (int i = 0;i < (int(s.size()) - 1 - i);++i)
        {
            if (s[i] != s[s.size() - 1 - i])return false;
        }
        return true;
    }
};

下面是改进的方法:空间复杂度为O(1)

class Solution {
public:
    bool isPalindrome(int x) {
        if (x < 0)return false;
        if(0==x)return true;
        int div = 1000000000;
        int cnt=10;
        for (;!(x / div);div /= 10,--cnt);
        cnt=cnt/2;
        while (x&&cnt--)
        {
            if (x / div%10 != x % 10)return false;
            div /= 100;
            x /= 10;
            if(x<10)return true;
        }
        return true;
    }
};

 

LeetCode 9. Palindrome Number

标签:

原文地址:http://www.cnblogs.com/csudanli/p/5885998.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!