Leetcode 9. 回文数

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

示例 1:

输入: 121

输出: true

示例 2:

输入: -121

输出: false

解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入: 10

输出: false

解释: 从右向左读, 为 01 。因此它不是一个回文数。

进阶:

你能不将整数转为字符串来解决这个问题吗?

**难度**: Easy

**标签**: 数学、


# -*- coding: utf-8 -*-
# @Author  : LG

"""
执行用时:96 ms, 在所有 Python3 提交中击败了38.64% 的用户
内存消耗:13.8 MB, 在所有 Python3 提交中击败了11.30% 的用户

解题思路:
    这里没有将数字转字符串进行判断。
    而是首先对数字进行了判断,限制在一个范围内,然后将数字翻转后进行判断。
"""
class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x<0 or x>2147447412: # 2147447412 是 2*31-1 内最大的回文数。负数 按题意可知均不回文
            return False
        x_copy = x
        num = 0
        while x:                # 翻转数字
            num = num*10 + x%10
            x = x//10
        if num == x_copy:
            return True
        else:
            return False