這道題我一開始想用的是dfs,但是超時了。為什麼會超時呢,應該是它的狀態轉移方程其實是只用兩種情況的,而且沒有那麼多種變化情況需要記錄,比如說如果是記錄下不同的解碼字串,那麼就要dfs,但是這裡其實只要加減就可以了,所以應該想到用dp.
index表示的是以當前字元作為結尾時一共有多少種解碼情況。有兩種,一種是以乙個字元加進去,還有一種就是要結合前乙個字元,即10-16.
0的話要特殊判斷一下,或者不在1-26時就要拆成乙個乙個的,不可能作為10-26來解碼。
class solution
//2else if(s[i-1] == '1' || s[i-1] == '2' && s[i] <= '6')
dp[i] += i-2 >=0 ? dp[i-2] : 1;
}return dp[s.size()-1];
}};
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...