昨天是周末,在家休息了一下,没有写文章,所以今天抓紧补回来,看题目吧!
判断回文,我们做的最多的就是判断字符串是不是回文,这里我们还是要用到Python的切片,下面是代码:class Solution(object):
def isPalindrome(self, x):
shuzi = str(x)
shuzi = shuzi[::-1]
if shuzi == str(x):
return True
return False
复制代码
将数字转换成字符串,直接用切片反转字符串,判断字符串是不是相当即可判断数字是不是回文数字。等等,题目下面说,不使用整数转字符串来解决问题,,看来前面的代码需要调整一下,不使用整数转字符串,代码如下:
class Solution(object):
def isPalindrome(self, x):
if x < 0:
return False
shuzi = x
new_number = 0
kaiguan = True
while(kaiguan):
if x >= 10:
new_number = new_number * 10 + x % 10
x = x / 10
else:
new_number = new_number * 10 + x % 10
kaiguan = False
if new_number == shuzi:
return True
else:
return False
复制代码
程序能实现,但是感觉这个方法很笨,将所有的数反转过来,再去比较,能不能只反转一半,然后在比较呢?答案当然是可以,不多说,直接上代码:
class Solution(object):
def isPalindrome(self, x):
if x < 0:
return False
if 0 <= x <10:
return True
weishu = len(str(x))
new_number = 0
for i in range(weishu / 2):
new_number = new_number * 10 + x % 10
x = x / 10
if weishu % 2 !=0:
x = x / 10
if x == new_number:
return True
return False
复制代码
这样做能减少一些运算的次数,提高运行的销量。