leetcode題----迴文數的判定

迴文數:指從左到右和從右到左看起來是一樣的,如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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章