leetcode刷題python之解碼方法

2021-09-29 15:49:44 字數 863 閱讀 5580

題目:一條包含字母 a-z 的訊息通過以下方式進行了編碼:

『a』 -> 1

『b』 -> 2

…『z』 -> 26

給定乙個只包含數字的非空字串,請計算解碼方法的總數。

示例 1:

輸入: 「12」

輸出: 2

解釋: 它可以解碼為 「ab」(1 2)或者 「l」(12)。

思路:使用動態規劃,當前位置的可能性dp[i]取決於dp[i-1]和dp[i-2],有點類似爬樓梯。進行判斷的條件為:當前值為零的時候,只在前乙個為1或者2,dp[i]=dp[i-1],否則置零;前乙個值為1,或者s[i - 1] == 『2』 and 0 < int(s[i]) < 7,dp[i]=dp[i-1]+dp[i-2]。使用了pre,cur,temp,使這個題的空間複雜度相對降低。

class solution:

def numdecodings(self, s: str) -> int:

if s[0] == '0': return 0

pre = cur = 1

i = 1

while i < len(s):

temp = cur

if s[i] == '0':

if s[i - 1] == '1' or s[i - 1] == '2':

cur = pre

else:

return 0

elif s[i - 1] == '1' or s[i - 1] == '2' and 0 < int(s[i]) < 7:

cur += pre

pre = temp

i += 1

return cur

Leetcode鍊錶刷題 pytho語言

為方便後續的使用查詢,記錄一下 函式包括 找到兩個單鏈表相交的起始節點 反轉單鏈表 刪除鍊錶中等於給定值 val 的所有節點 definition for singly linked list.class listnode object def init self,x self.val x self...

開始刷題LeetCode

今天決定開始刷題,每天至少一題,如果題目確實沒有解決出來沒有關係,但是要保證每天至少接觸了一道新的題目!一定要堅持下去,現在是個菜鳥可能會感覺有點難度,堅持下去,總有一天會好的!今天是第一天,做的第乙個題目 reverse words in a string given an input strin...

leetcode刷題歷程

難度 簡單 題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 ...