[LeetCode]Palinkdrom Number

看到此文,是否觉得体内洪荒之力爆发,饥渴难耐想吐槽、情不自禁想捐赠
本文为原创文章,尊重辛勤劳动,可以免费摘要、推荐或聚合,亦可完整转载,但完整转载需要标明原出处,违者必究。

支付宝微  信

Problem

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

Some hints:

Could negative integers be palindromes? (ie, -1)

If you are thinking of converting the integer to string, note the restriction of using extra space.

You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case?

There is a more generic way of solving this problem.

Ideas

原题注明不得使用额外的空间,所以放弃掉将数字转换成字符串的方式。

可以考虑将整形数字进行取反,但是取反后会有益处的情况。怎么办?既然是判断是否为回文数字,那么翻转一半的数字后,和未翻转的数字进行比对就可以了。这样就不会导致数字益处的问题了。

在反转时,如何判断已经反转到了中间的数字?如果未反转的数字大于已经反转的数字,那么此时就是中点(或者是和中点相差一位的位置)。

Code

class Solution {
public:
    bool isPalindrome(int x) {
        if (x < 0 || (x % 10 == 0 && x > 0)) return false;
        int r_x = 0;
        while (x > r_x) {
            r_x = r_x * 10  + (x % 10);
            x /= 10;
        }
        
        return x == r_x || x == r_x / 10;
    }
};

文章来源:胡小旭 => [LeetCode]Palinkdrom Number


这是一篇原创文章,如果您觉得有价值,可以通过捐赠来支持我的创作~
捐赠者会展示在博客的某个页面,钱将会用在有价值的地方,思考中...


分类: C/C++, 技术, 算法, 编程 | 标签: , , , , , | 评论 | Permalink

发表评论

电子邮件地址不会被公开。