leetcode 91 解碼方法(001)

2021-10-05 01:58:03 字數 852 閱讀 9393

一條包含字母 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) 。

遞迴的方法:

這裡我們的值實際是從1開始的,但是為了便於程式設計處理第乙個節點,所以我們也把m[0]加入。

整個邏輯如下:

當只有乙個數的時候,那肯定只能有一種編碼方式。

當從第二位開始就需要判斷了,有以下幾種情況:

(1)s[i] 等於 『0』 , 若s[i-1] 是 『1』 || 『2』 ,那麼說明不增加情況,等於s[i-2]的個數。否則返回0;

(2)s[i] 不等於『0』 ,那麼如果 s[i-1] 是 『1』 || (『2』 && s[i] 等於『1』||『6』) 這種情況都要增加次數,s[i-1] 的次數加上s[i-2]的次數。

(3)s[i] 不等於『0』 , s[i-1] 在3-9,0之間,那說明不增加情況,等於s[i-1]的次數。

一開始沒有想清楚,這時候最好舉幾個簡單的例子。

class

solution

return m[n];}

};

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...