新手区 9. Palindrome Number

沐芓李 · 2017年05月19日 · 最后由 沐芓李 回复于 2017年06月08日 · 2297 次阅读

题目描述

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

判断一个整数是否是回文。本题不允许使用额外空间。

Some hints:
1.如果你在考虑把整数转换为字符串,请注意对额外空间的限制;
2.你也可以反转整数,但是如果你解决过 "Reverse Integer” ,就会知道有可能会溢出。

原文地址

思路方法

最常规的思路就是把整数反转,然后看是否相等。但是整数是否溢出和其是否是回数没有关系。
如果不反转,则可以考虑对比整数前半部分和后部分。注意点有,如果整数末尾有 0 且不为 0,则必然不是回数。

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if x < 0:
            return False
        if (x != 0) and (x%10 == 0):
            return False

        y = 0
        while x > y:
            # y 存放整数后半部分的反转
            y = y*10 + x%10
            # x 存放整数前半部分
            x = x/10

        return x == y or x == (y/10)
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 4 条回复 时间 点赞
沐芓李 代码入门 中提及了此贴 05月19日 16:48

赞,这个思路就是对切,然后把右边反转,和左边对比,遇到奇数还得砍掉尾数。

恒温 回复

是的哦 这种小思维能感觉到代码的神奇和一种美感啊

易寒 回复

哈哈 做的都是 easy 状态下 都比较精简啊

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册