2021-01-15 Python百日打卡学习自【夸可编程】

'''
题目

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

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

输入为整数
tips

你能想到不将整数转换为字符串的方法吗
利用除法和取模运算
'''
from functools import reduce

def isPalindrome(x):
# 个位直接返回True
if 0 <= x < 10:
return True
# 负数为False
if x < 0:
return False
alist = []
orig_x = x
while x > 0:
alist.append(x % 10)
x //= 10
# print(alist)
rev_x = reduce(lambda x, y: x * 10 + y, alist)
print(orig_x, rev_x)
if orig_x == rev_x:
return True
else:
return False
# pass

print(isPalindrome(1))
print(isPalindrome(121))
print(isPalindrome(-121))

网站答案

解法
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
性能:
时间复杂度O(logn)
空间复杂度O(1)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容