题目:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
不将其转换为字符串
思路:
1.对数字逆序计算,之后判断是否和原数字相等
2.获取数字的一半,并逆序判断是否相等
1.
def isPalindrome(self, x: int) -> bool:
if x < 0 or (x % 10 == 0 and x != 0):
return False
if x < 10:
return True
i = 0
j = x
while j != 0:
i = i*10+j%10
j = j // 10
if i==x:
return True
else:
return False
2.数字的一半很好获取,只需要对循环停止的条件进行改变即可,逆序的数字比逐渐减位的数字大时停止循环,此时两数字相似于数字的位数的一半
def isPalindrome(self, x: int) -> bool:
if x < 0 or (x % 10 ==0 and x != 0):
return False
i = 0
j = x
while j > i:
i = i*10+j%10
j = j // 10
return i == j or i//10 == j