LintCode 解碼方法

2021-08-16 00:04:35 字數 683 閱讀 2913

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