题目:判断一个整数为回文数,前提时不能转化为str
比如1234321是回文数,而-1234321则是False
对整数是否是回文数的判断可以分为三种情况:
- 数字<0或以0结尾的一定不是回文数
- 位数为1的一定是回文数
- 普通整数,逆序与原整数相等为回文数。这种情况还可以简化,只要判断前半边数字和后半边逆序相等即可,对数字不断对10取余,取整,就能得到右半边的逆序和剩余的左半边。
python代码实现如下
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if 10 > x >= 0:
return True
if x <0 or ( not x%10):
return False
reversed_x = 0
while x > reversed_x:
reversed_x = 10 * reversed_x + x % 10
x = x//10
return x== reversed_x or reversed_x//10==x # 整数为偶数、技术两种情况