题目
- 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
- 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,121 是回文,而 123 不是。
示例
示例一
输入:x = 121
输出:true
示例二
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例三
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
思路及算法代码
思路
利用字符串的特性,通过将整数转换为字符串,然后利用切片操作得到其逆序字符串,最后进行比较来判断是否是回文数。
代码
class Solution:
def isPalindrome(self, x: int) -> bool:
# 将整数转换为字符串
str_x = str(x)
# 获取整数的逆序字符串
reverse_str_x = str_x[::-1]
# 检查原字符串是否等于逆序字符串,若相等则返回True,否则返回False
if str_x == reverse_str_x:
return True
else:
return False
复杂度分析
-
时间复杂度:
- 将整数转换为字符串的时间复杂度为 O(log|x|),其中 |x| 表示整数 x 的位数。
- 切片操作 [::1] 的时间复杂度为 O(log|x|),因为它需要将字符串中的每个字符都遍历一次。
- 字符串比较的时间复杂度为 O(log|x|),因为需要逐个比较每个字符。
- 综合起来,整个函数的时间复杂度为 O(log|x|)。
-
空间复杂度:
- 将整数转换为字符串需要额外的空间,但由于字符串的长度与整数的位数成正比,因此空间复杂度也为 O(log|x|)。
知识点
-
[::1] 是 Python 中的切片操作,用于创建原始序列的副本,并且反转副本的顺序。这里详细解释一下它的含义:
- 第一个冒号前面的数字表示切片的起始索引,默认为序列的开始位置,即 0。
- 第一个冒号后面的数字表示切片的结束索引,默认为序列的结束位置,即序列的长度。
- 冒号后面的数字表示切片的步长,默认为 1。
-
因此,[::-1] 中的第一个冒号前面没有数字,表示从序列的开头开始切片;第一个冒号后面没有数字,表示切片到序列的结束位置;步长为 -1,表示反向切片。