判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗?
回文数算是算法题里最简单的那种的题目了,如果是c++的话,就是常规的做法,但现在我是个pythoner,所以可以使用列表的一些骚操作来解决这个问题,数字转化为字符串的话,就可以用列表操作了,使用列表的lists[0] == lists[-1]这样的反转属性。
# 176 ms, 在Palindrome Number的Python提交中击败了62.52% 的用户 # 内存消耗 : 10.7 MB, 在Palindrome Number的Python提交中击败了0.25% 的用户 class Solution(object): def isPalindrome(self, x): """ :type x: int :rtype: bool """ if x < 0: return False else: flag = 1 x = str(x) for i in range(len(x)//2): if x[i] == x[-i-1]: continue else: flag = 0 break return bool(flag)
但是题目一定希望我们不要多开新的空间,而且进阶要求是不转化为字符串,那么可能就要考虑一些常规做法
class Solution(object): def isPalindrome(self, x): """ :type x: int :rtype: bool """ if x<0 or (x % 10 == 0 and x != 0): return False y=0 while(x>y): #构造新的数 y= x % 10 + y * 10 #取除个位外的所有书 x //= 10 return x==y or x==y//10
那就尝试着把每位数都分离出来,然后组成一个新的数,最后与原数对比,也是很简单的
来源:https://www.cnblogs.com/yfc0818/p/11072642.html