Leetcode 9 回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121
输出: true
示例 2:

输入: -121
输出: false
解释: 从左向右读,-121 。 从右向左读,121- 。因此它不是一个回文数。
示例 3:

输入: 10
输出: false
解释: 从右向左读,01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?

回文数算是算法题里最简单的那种的题目了,如果是c++的话,就是常规的做法,但现在我是个pythoner,所以可以使用列表的一些骚操作来解决这个问题,数字转化为字符串的话,就可以用列表操作了,使用列表的lists[0] == lists[-1]这样的反转属性。

# 176 ms, 在Palindrome Number的Python提交中击败了62.52% 的用户
# 内存消耗 : 10.7 MB, 在Palindrome Number的Python提交中击败了0.25% 的用户
class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if x < 0:
            return False
        else:
            flag = 1
            x = str(x)
            for i in range(len(x)//2):
                if x[i] == x[-i-1]:
                    continue
                else:
                    flag = 0
                    break
            return bool(flag)

但是题目一定希望我们不要多开新的空间,而且进阶要求是不转化为字符串,那么可能就要考虑一些常规做法

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if x<0 or (x % 10 == 0 and x != 0):
            return False
        y=0
        while(x>y):
        	#构造新的数
            y= x % 10 + y * 10
            #取除个位外的所有书
            x //= 10
        return x==y or x==y//10

那就尝试着把每位数都分离出来,然后组成一个新的数,最后与原数对比,也是很简单的

原文地址:https://www.cnblogs.com/yfc0818/p/11072642.html