回文数:指从左到右和从右到左看起来是一样的,如121,25852,但-121不是回文数,因为有负号。
法一,将int转化为str:双向队列
时间复杂度:O(n^2) [因为每次pop(0)的时间复杂度都是O(n),因为pop(0)从列表头删除结点,需要重新排列,而pop()则快得多)]
def func(x):
x = list(str(x))
while len(x)>1:
if x.pop(0)!=x.pop():
return False
return True
print(func(121)) #True
法二:将int转化为str:双指针
时间复杂度:O(n) 指针效率一直都很快
def func(x):
x = list(str(x))
n = len(x)
l,r = 0,n-1
while l!=r:
if x[l]!=x[r]:
return False
l+=1
r-=1
return True
print(func(1)) #True