回文数
原题地址:回文数
题目描述:
给你一个整数 x
,如果x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121
是回文,而 123
不是。
示例1:
输入:x = 121
输出:true
示例2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
思路:
这道题的关键在于我们是否能够得到原数的倒序,因为只需要将原数的倒序和原数进行比较,观察是否相同就能立刻获得结果。
最简单的做法就是将原数转换成字符串,倒序后判断原序与倒序是否相等,一行代码即可搞定,简直有手就行~~
代码如下:
class Solution:
def isPalindrome(self, x: int) -> bool:
return str(x) == str(x)[::-1]
但对于进阶版而言,我们就不能将数字转换成字符串了,就要考虑其他方法。
因为输入的是数字,因此我们很自然的能够想到使用%10
来获得数字各位的值,并将其进行倒序处理。
最后判断倒序与原序是否相同。
代码如下:
class Solution:
def isPalindrome(self, x: int) -> bool:
res = 0
copy = x
while x > 0:
res = res * 10 + (x % 10)
x = x // 10
return copy == res
总结
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)