返回
打卡7:冲刺刷题,掘金奖品我全都要!
前端
2023-11-12 00:02:05
第一次参加掘金打卡活动,别的不说,主要是奔着奖励来的。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
通过这种方法,我们可以正确判断任意整数是否是回文数。
参考
结语
本期文章到此结束,希望对大家有所帮助。刷题打卡继续进行中,让我们一起努力,赢得掘金的丰厚奖励!