返回

打卡7:冲刺刷题,掘金奖品我全都要!

前端

第一次参加掘金打卡活动,别的不说,主要是奔着奖励来的。4.12开始,为了达到14题小目标,冲冲冲!!!

这是第七题。

题目

题目链接:回文数

题目

判断一个整数是否是回文数。回文数是指正读和反读都相同的整数。

示例 1:

输入:121
输出:true

示例 2:

输入:-121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入:10
输出:false
解释:从左向右读, 为 10 。 从右向左读, 为 01 。因此它不是一个回文数。

示例 4:

输入:-101
输出:false

提示:

  • 假设我们的环境只能存储 32 位有符号整数,那么范围就是 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出,则返回 false

正文

首先,我们需要明确什么是回文数。回文数是指正读和反读都相同的整数,例如121、12321。

为了判断一个整数是否是回文数,我们可以使用多种方法。一种简单的方法是将整数转换成字符串,然后比较字符串的正序和反序是否相同。如果相同,则说明该整数是回文数,否则就不是。

def is_palindrome(num):
  # 将整数转换成字符串
  num_str = str(num)

  # 比较字符串的正序和反序是否相同
  return num_str == num_str[::-1]

但是,这种方法存在一个问题:它不能处理负数。负数在转换成字符串后,符号会消失,这会导致判断错误。

为了解决这个问题,我们可以使用另一种方法:将整数逐位反转,然后比较反转后的整数和原整数是否相同。如果相同,则说明该整数是回文数,否则就不是。

def is_palindrome(num):
  # 处理负数
  if num < 0:
    return False

  # 逐位反转整数
  reversed_num = 0
  while num > 0:
    reversed_num = reversed_num * 10 + num % 10
    num //= 10

  # 比较反转后的整数和原整数是否相同
  return num == reversed_num

通过这种方法,我们可以正确判断任意整数是否是回文数。

参考

结语

本期文章到此结束,希望对大家有所帮助。刷题打卡继续进行中,让我们一起努力,赢得掘金的丰厚奖励!