Determine whether an integer is a palindrome. Do this without extra space.
判断一个整数是否是一个回数。不能使用额外的空间。
Example:
12321、121、1、0 # 这样正反读一样的数字称为回数
分析: 回数正反读都一样,那么负数肯定是不符合要求的,其余的数字就需要判断前半部分和后半部分数字是否一致。要进行比较,这时就考虑将需要判断的数字转换成字符串来进行比较。
def isPalindrome(num):
if num < 0: return False
str_num = str(num) # 转换成字符串
# 首尾数字进行比较,比较的次数为总长度的一半
for i in range(len(str_num) // 2 + 1):
if str_num[i] != str_num[-(i+1)]:
return False # 如果首尾数字出现一个不相同,则不是回数
return True
因为只需要判断数字反过来是否与原数一样,也可以利用字符串的切片来对上面的进行优化。
def isPalindrome(num):
str_num = str(num) # 将数字转化为字符串
return str_num == str_num[::-1] # 用原字符串与翻转后的字符串进行比较
网友评论