Palindrome Number:
当一个数字倒序和正序相同时,返回true,否则false
最简单的办法就是将数字转换成为string类型,然后对两个string进行比较,即位比较字符串是否相等
class Solution(object):
def isPalindrome(self, x):
“”"
:type x: int
:rtype: bool
“”"
a = str(x)[::1]
b = str(x)[::-1]
if a == b:
c = True
else:
c = False
return c
当题目中要求不能使用转换字符串这种办法时,来看看这些数字的特征吧。
例如:12,一定返回False
1221,一定返回True
12321,一定是true
X<0,x是10的倍数一定返回false(x不等于0的情况下)
设想一下,如果数字是偶数位的话,只需要计算出一半数字就能进行比较,就例如1221的12和它的后两位21进行逆序得到的12比较。
如果数字是奇数位的话,只需计算一半数字就能得到了
那么,就是怎样拿到那一半数字,例如1221,拿到最后一位1,1221%10=1,就拿到了,倒数第二位是1*10+(1221/10)%10=2,这样就拿到了。偶数位时,只需要判断12=12就可以,但是奇数位就需要判断12=123/10.
代码如下:
class Solution(object):
def isPalindrome(self, x):
“”"
:type x: int
:rtype: bool
“”"
if (x < 0 or (x % 10 == 0 and x != 0 )):
return False
revertedNumber = 0
while x > revertedNumber:
revertedNumber = revertedNumber * 10 + x % 10;
x /= 10;
return x == revertedNumber or x == revertedNumber/10
在这里,我想说一下python2he3关于除法的区别:
在python2中,只有一个斜线时,5/2=2,而在python3中,5/2=2.5
当为双斜线时,python2和3就没有区别了,都是5//2=2