pythontip 100days-day15

题目

判断一个整数是否为回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

例子

isPalindrome(1) -> True
isPalindrome(121) -> True
isPalindrome(-121) -> False

假设

  1. 输入为整数

tips

  1. 你能想到不将整数转换为字符串的方法吗
  2. 利用除法和取模运算

答案

解法

def isPalindrome(x):
    if x<0 or (x%10 == 0 and x != 0):
        return False
    origin = x
    revertedNumber = 0
    while x > 0:
        revertedNumber = revertedNumber*10 + x%10
        x //= 10
    return origin == revertedNumber   

性能

  1. 时间复杂度O(logn)
  2. 空间复杂度O(1)

关键点

  1. 利用除法和取模运算