【LeetCode 簡單題】3-用Python判斷迴文數
阿新 • • 發佈:2019-02-01
宣告
第3題啦~~~感覺這道題和上一題(第2題)思路差不多,最後再加一句return rev_x == x即可
題目
判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
eg1.輸入-輸出:121-True
eg2.輸入-輸出:-121-False
eg3.輸入-輸出:10-False
進階: 你能不將整數轉為字串來解決這個問題嗎?
正文
解法1。字串的一鍵逆序輸出[::-1],和上一題(第2題)逆序輸出一樣
# V 1.0 能提交 class Solution: def isPalindrome(self, x): str_x = str(x) rev_x = str_x[::-1] return str_x == rev_x
解法2。 轉成字串,再用下標索引字串的字元,逐一對比
# V 2.0 能提交
class Solution:
def isPalindrome(self, x):
str_x = str(x)
for i in range(len(str_x)):
if str_x[i] != str_x[-i-1]:
return False
return True
解法3。list的函式reverse,一鍵完成逆轉
# V 3.0 能提交 class Solution: def isPalindrome(self, x): str_x = list(str(x)) rev_x = list(str(x)) rev_x.reverse() if str_x != rev_x: return False else: return True
解法4。處理邏輯和上一題(第2題)求逆序數是一樣的,從輸入整數最後一位開始取,取完再判斷一下和原來的數是否相等
# 進階,不轉成字串:V 1.0 能提交 class Solution: def isPalindrome(self, x): count = 0 num_x = abs(x) while num_x: count = count*10 + num_x%10 num_x //= 10 if x < 0: return False # 負數肯定不是迴文數,直接返回False return x == count