【前言】堅持日更leetcode刷題系列
不積跬步,無以至千里;不積小流,無以成江海。願與諸君共勉!
【題目】9.回文數
判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例:
示例 1:
輸入: 121
輸出: true
示例 2:
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是乙個回文數。
示例 3:
輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是乙個回文數。
思路一:很顯然我們可以將此整數轉化為字串後,定義兩個列表,乙個存入原始資料,另乙個進行逆轉操作,再用列表中的eq函式進行判斷即可。**如下:
import operator
class
solution
(object):
defispalindrome
(self, x)
:"""
:type x: int
:rtype: bool
"""x =
str(x)
#將整數轉化為str型別
list1 =
list2 =
list1 =
list
(reversed
(x))
#用乙個列表存逆轉資料
list2 =
list
(x)#用另乙個列表存原始資料
result = operator.eq(list1,list2)
#呼叫eq函式判斷兩個列表是否相同
return result
執行結果:
notice:
可能有朋友會自然的想到,在比較兩個列表是否相同時,直接用『==』 比較運算子
,但此種比較方式,只能判斷列表內數值是否相等,而不能判斷其位置情況,例如:list[1,2,3]和list[2,1,3]在用『==』比較運算子時會返回true。
補充:
看到leecode上其他前輩的寫法中,我們可以直接用str型別,而不需要將其放入list進行操作,一開始我想通過list來簡單的實現逆轉操作,可能受上一題的影響,自然而然的想到這種方法,但是我們同樣可以 通過字串的切片操作將其逆轉。
python比較兩個list相等的方法
思路二:利用模十的方法,將得到的x每個數碼用list存起來,再將其還原為整數,實現首尾數碼的調換。對於其中數碼最後一位為 0 的整數,以及符號為負的整數進行剔除,但注意其中整數為0的特例,不能進行剔除。**如下:
class
solution
(object):
defispalindrome
(self, x)
:"""
:type x: int
:rtype: bool
"""if(x!=
0and x%
10==0)
or x<0:
#剔除尾碼為0以及負數的情況
return
false
else
: original_num = x #因為之後的x值會改變,因此要存入原始x值
reversed_num =
0#逆轉之後的值
list1 =
while x>0:
10)x = x//
10for i in
range
(len
(list1)):
reversed_num = reversed_num*
10+list1[i]
if(reversed_num == original_num)
:return
true
else
:return
false
回文數進一步優化演算法(c++版)
註明:
leetcode 每日一題 回文數
數學解法 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 ...
LeetCode每日一題 回文鍊錶
題目 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 思路 判斷是否是回文,可以將鍊錶儲存在乙個陣列中,然後用兩個指標乙個指向頭,乙個指向尾,同時向中間掃瞄。演算法 複製鍊錶值到陣列列表中。使用雙指標法判斷是否為回文。cl...
每日一題 LeetCode
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...