判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例 1:
輸入: 121
輸出: true
示例 2:
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是乙個回文數。
示例 3:
輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是乙個回文數。
高階:
你能不將整數轉為字串來解決這個問題嗎?
步驟:1、轉換為字串
2、判斷第乙個字元是否為負號
3、判斷一一對應的字元是否相等
提交結果:
執行用時 : 120 ms, 在palindrome number的python提交中擊敗了100.00% 的使用者
記憶體消耗 : 11.6 mb, 在palindrome number的python提交中擊敗了0.25% 的使用者
**:
class solution(object):
def ispalindrome(self, x):
""":type x: int
:rtype: bool
"""a = str(x)
#如果整數是負數,則不是回文數
if a[0] == '-':
return false
#如果整數是10的整數倍,則不是回文數
#if a[-1] == '0':
# return false
#判斷輸入的非負整數的長度,偶數,除以2,奇數。加1除以2
if len(a) % 2 == 0:
n = len(a) / 2
else:
n = (len(a)+1) / 2
#判斷是否是回文數
for i in range(0, int(n)):
if a[i] == a[-(i+1)]:
continue
else:
return false
break
return true
while true:
f = solution()
num = input("請輸入數字:")
print(f.ispalindrome(num))
步驟:
1、判斷輸入的數是否為負數
2、字串翻轉
3、判斷翻轉前後字串是否相等
提交結果:
執行用時 : 140 ms, 在palindrome number的python提交中擊敗了100.00% 的使用者
記憶體消耗 : 11.6 mb, 在palindrome number的python提交中擊敗了0.25% 的使用者
**:
class solution:
def ispalindrome(self, x):
""":type x: int
:rtype: bool
"""if int(x) < 0:
return false
else:
y = str(x)[::-1] #字串反轉
if y == str(x):
return true
else:
return false
while true:
fun = solution()
a = input('請輸入數字:')
if a == 'quit':
break
else:
print(fun.ispalindrome(a))
不將整數轉為字串的方法想到的為分別將每一位取下(%10....),判斷對應是否相等
**省略
Leetcode刷題之括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...
leetcode刷題之堆
今天終於開啟的第二個專題的刷題之旅堆,不過第乙個專題棧還有乙個小問題沒解決就是利用遞減棧去解決接雨水的問題,雖然那道題我用動態規劃的問題解決出來了,我記得看到過一道面試題,問棧和堆有什麼區別。通過搜尋網上的資料總結如下。棧 stack 由系統分配記憶體,速度較快,但是自己無法掌握。堆 一般用兩種方法...
leetcode刷題之樹
樹的三種遍歷方式 的 非遞迴版本 中序遍歷 下面的解法就是相當於 第一趟先把元素按照中序的順序進棧 第二趟 是相當於把 null標記過的位置給拿出來 class solution else return res 先序遍歷 class solution else return res 公共父節點 pu...