判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121 输出: true
示例 2:
输入: -121 输出: false 解释: 从左向右读, 为 -121 。从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
你能不将整数转为字符串来解决这个问题吗?
1 )首先我们知道题目要求不可以将数字转换为 字符串 来解决,因此 [::-1] 的办法就不能用了
2 )最容易想到的思路,那就是通过一一比较前后两个数字是否相等来判断该整数是否为回文数,大家可以看看下面的图解GIF(图来自 @程序员小吴)
3 )在Python中,有几个常用的数学运算符号需要了解一下:
# 回文数
def isPalindrome(x):
# 如果x为负数,那就肯定不是回文数
if x<0: return False
# 获取数字长度
div = 1
k = x
while (k/10 >=1):
div = div * 10
k = k//10
#print(div)
while x>0:
#print(x)
#print(div)
left = x//div
right = x%10
if left != right: return False
# 删掉左右两端的数字
x = (x%div)//10
div = div//100
return True