学习回文数的解法
文章目录
方法一:取反
逐个弹出,形成x反过来读形成的数
class Solution:
def isPalindrome(self, x: int) -> bool:
# 若x为负数,则一定不是回文数
if x < 0:
return False
reverse = 0
temp = x
while temp > 0:
pop = temp % 10
reverse = reverse * 10 + pop
temp = temp // 10
if reverse == x:
return True
else:
return False
方法二:后半部分取反
class Solution:
def isPalindrome(self, x: int) -> bool:
# 若x为负数或不为0但末尾为0的数,则一定不是回文数
if (x < 0) or (x % 10 == 0 and x != 0):
return False
reverse = 0
while (x > reverse):
pop = x % 10
reverse = reverse * 10 + pop
x = x // 10
# 若x位数为奇数,则将reverse // 10可以去除不影响结果的中间位
return reverse == x or reverse // 10 == x
复杂度分析
- 时间复杂度: O ( log n ) O(\log n) O(logn),对于每次迭代,我们会将输入除以 10 10 10,因此时间复杂度为 O ( log n ) O(\log n) O(logn)(n为输入数字的值,则 log n \log n logn为数字的位数。
- 空间复杂度:
O
(
1
)
O(1)
O(1)。