leetcode91 解碼方法 python

2021-09-19 05:12:05 字數 800 閱讀 3299

解碼方法

一條包含字母 a-z 的訊息通過以下方式進行了編碼:'a' -> 1 'b' -> 2... 'z' -> 26

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

示例 1: 輸入: "12" 輸出: 2

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

示例 2: 輸入: "226" 輸出: 3

解釋: 它可以解碼為 "bz" (2 26), "vf" (22 6), 或者 "bbf" (2 2 6) 。

def numdecodings(self, s):

dp=[0]*(len(s)+1)                 #dp[0,1,2......n],len=n

if len(s)==0 or s[0]=='0':        #邊界情況(特殊情況)

return 0

dp[0]=1                          

dp[1]=1

for i in range(2,len(s)+1):

if s[i-1]>'0':                   #若s[i-1]不為0,則s[i-1]可單獨存在,s[i]可由s[i-1]走1步到達

dp[i]=dp[i-1]

if s[i-2]=='1' or (s[i-2]=='2' and s[i-1]<='6') : #承接上面,若s[i-2]*10+s[i-1]<=26,則s[i]可由s[i-2]走2步到達

dp[i]+=dp[i-2]

return dp[len(s)]

LeetCode91 解碼方法

這題,我花了好大的功夫才通過,中途踩了很多坑,從這個15頂25踩,通過率只有10 多,就能看出這個題,雖然是乙個中等難度的題,但是並沒有那麼好做。看到題目,感覺有點像爬樓梯的那個?想到用動態規劃。第一次寫 沒有考慮0的情況,出錯,那麼就考慮吧,如果出現在頭,就返回0,出現的中間的話。不過我是從後往前...

LeetCode 91 解碼方法

一條包含字母a z的訊息通過以下方式進行了編碼 a 1 b 2 z 26 給定乙個只包含數字的非空字串,請計算解碼方法的總數。示例 1 輸入 12 輸出 2 解釋 它可以解碼為 ab 1 2 或者 l 12 示例 2 輸入 226 輸出 3 解釋 它可以解碼為 bz 2 26 vf 22 6 或者 ...

leetcode 91 解碼方法

一條包含字母a z的訊息通過以下方式進行了編碼 a 1 b 2 z 26給定乙個只包含數字的非空字串,請計算解碼方法的總數。示例 1 輸入 12 輸出 2解釋 它可以解碼為 ab 1 2 或者 l 12 示例 2 輸入 226 輸出 3解釋 它可以解碼為 bz 2 26 vf 22 6 或者 bbf...