判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 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