參考**
『a』 -> 1given an encoded message containing digits, determine the total number of ways to decode it.『b』 -> 2
… 『z』 -> 26
for example,
given encoded message"12"
, it could be decoded as"ab"
(1 2) or"l"
(12).
the number of ways decoding"12"
is 2.
這道題大體思路很簡單,主要問題是0
的處理:
對於s
中的第i
個字元s[i]
,若s[i]
不是0
,那麼s[i]
可以作為乙個單獨的符號解碼;若s[i]
是0
,那麼s[i]
必須和s[i-1]
組合起來解碼。
如果s[i-1]
和s[i]
組合起來屬於[10, 26]
,那麼可以作為2位數解碼, 反之不能。
演算法描述
遍歷s
,對s[i]
:
s[i] = 0 && 10 <= s[i-1]s[i] <= 26: n[i] = n[i - 2]1 <= s[i] <= 9 && 10 <= s[i-1]s[i] <= 26: n[i] = n[i - 1] + n[i - 2]
1 <= s[i] <= 9 && !(10 <= s[i-1]s[i] <= 26): n[i] = n[i - 1]
其他情況說明不能解碼,直接返回0
class solution else
if (s[i - 2] == '0') else
}return n[s.size()];
}};
91 Decode Ways 翻譯數字
a 1 b 2 z 26given anon emptystring containing only digits,determine the total number of ways to decode it.example 1 input 12 output 2 explanation it c...
91 解碼方法
方法一 動態規劃法 該問題可以通過動態規劃的方法進行求解,我們假設s i 代表一條長度為i的訊息,對應的解碼方法的總數為dp i 那麼這個值的大小和dp i 1 以及dp i 2 相關,因為解碼時只有一位或者兩位字元可以作為乙個原碼看待。當我們假設這條訊息的最後一位作為原碼時,它的取值範圍為 1 9...
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 或者 b...