512. 解碼方法
有乙個訊息包含a-z
通過以下規則編碼
'a' -> 1
'b' -> 2
...'z' -> 26
現在給你乙個加密過後的訊息,問有幾種解碼的方式
樣例給你的訊息為12
,有兩種方式解碼 ab(12) 或者 l(12). 所以返回2
標籤
動態規劃
字串處理
很陰的一道題,前後都是坑。
第一眼看上去就是第i個字元位置的解碼方式數n[i]為n[i-1]+n[i-2]或n[i]=n[i-1],分別是當前位置i和i-1能組成10~26的情況和不能的情況。
但有幾種特殊情況要考慮:
1、0的前面不為1或2,結果為0;
2、輸入「0」的結果也是0;
3、10和20時也只有一種情況,因此只有11~19和21~26可以n[i-1]+n[i-2];
4、若當前位的後一位為0,則當前位必須為1或2,且只能n[i]=n[i-1],否則無法解碼,結果為0。
class solution
else
}return n.back();
}};
LintCode習題系列之解碼方法
這是筆者在lintcode社群刷題的經歷,希望思考的過程對讀者有所幫助 題目描述 有乙個訊息包含a z通過以下規則編碼 a 1 直到 z 26 現在給你乙個加密過後的訊息,問有幾種解碼的方式 例項 12 1 2 代表ab,12代表l,共兩種情況 思路 首先排除特殊情況 若輸入的string為 則結果...
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...