給你乙個整數 x ,如果 x 是乙個回文整數,返回 true ;否則,返回 false 。
回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。例如,121 是回文,而 123 不是。
示例 1:
輸入:x = 121
輸出:true
示例 2:
輸入:x = -121
輸出:false
解釋:從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是乙個回文數。
示例 3:
輸入:x = 10
輸出:false
解釋:從右向左讀, 為 01 。因此它不是乙個回文數。
示例 4:
輸入:x = -101
輸出:false
高階:你能不將整數轉為字串來解決這個問題嗎?
想法一:
將整數轉換為字串之後,判斷字串中的字元逆序與正序是否相等,如果相等則是回文字。
class
solution
: def ispalindrome
(self, x: int)
-> bool:
# 整數轉換為字串並與之逆序判斷是否相等
return
str(x)
==str
(x)[::
-1]
想法二:
如果整數小於0,或者是10的倍數則都不可能為回文字。設定乙個新的變數r,將目標數字的除以10的餘數作為新變數r的最高位數字值,同時目標數字的值取除以10的整數部分,通過x與r大小作為迴圈的依據,當x小於r時迴圈結束(這樣的做法也可以減少迴圈次數)。當目標數字的位數為偶數時,x與r的值是相等的,當目標數字的位數是奇數時,x與r的最高位數字之外的數字相等。
class
solution
: def ispalindrome
(self, x: int)
-> bool:
if x <0or
(x %
10==
0 and x !=0)
:return false
r =0while x > r:
r = r*
10+ x%
10 x = x//10
return x == r or x == r//10
LeetCode刷題筆記第26題
題目 給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用o 1 額外空間的條件下完成。題目分析 做題之前一定要將題目分析的細緻一些,因為有些條件如果一旦不注意就會造成程式結果出現偏差或者執行不通過...
LeetCode刷題筆記第35題
題目描述 給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。解題思路 最直接的想法就是使用二分查詢,如果有序陣列中含有與target值相等的元素,直接返回對應的索引值 如果沒有則在查詢完畢之後,返回對應...
leetcode刷題筆記 第27題 移除元素
描述 給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。示例 給定 nums 3,2,2,3...