解碼方法2

2021-10-07 17:31:11 字數 575 閱讀 8089

一、題目描述

二、題目分析

這道題使用動態規劃進行解決,主要要分析清楚可能的情況。

我們使用乙個陣列dp[i]來表示[0,i]的字串可以解碼的型別總類,對於每乙個i,我們有兩種做法,一是自己單獨形成字母,二是與前面的數形成字母。對於*和數字,我們要分開討論。

若是*號,那麼單獨形成字母時可以有9種情況,dp[i] = dp[i-1] * 9;若要跟前面的一位形成數字,又有三種情況:

第一,前面的數字是1,那有9種情況,dp[i] = dp[i-2] * 9;

第二,前面數字是2,那有6種情況,dp[i] = dp[i-2] * 6;

第三,前面數字是*,有15種情況(前面兩種概況之和),dp[i] = dp[i-2] * 15;

若是字母,也是進行類似的分析。

emm然後,有幾個坑,1是字串可能有0(看題目我以為沒有),二是*不能替代0。(無他,服了)

三、**

**:

public class solution  else 

}return (int) dp[s.length()];

}}

LeetCode 639 解碼方法 2

一條包含字母 a z 的訊息通過以下的方式進行了編碼 a 1 b 2 z 26除了上述的條件以外,現在加密字串可以包含字元 了,可以被當做1到9當中的任意乙個數字。給定一條包含數字和字元 的加密資訊,請確定解碼方法的總數。同時,由於結果值可能會相當的大,所以你應當對109 7取模。翻譯者標註 此處取...

LintCode 解碼方法

512.解碼方法 有乙個訊息包含a z通過以下規則編碼 a 1 b 2 z 26現在給你乙個加密過後的訊息,問有幾種解碼的方式 樣例給你的訊息為12,有兩種方式解碼 ab 12 或者 l 12 所以返回2 標籤 動態規劃 字串處理 很陰的一道題,前後都是坑。第一眼看上去就是第i個字元位置的解碼方式數...

91 解碼方法

方法一 動態規劃法 該問題可以通過動態規劃的方法進行求解,我們假設s i 代表一條長度為i的訊息,對應的解碼方法的總數為dp i 那麼這個值的大小和dp i 1 以及dp i 2 相關,因為解碼時只有一位或者兩位字元可以作為乙個原碼看待。當我們假設這條訊息的最後一位作為原碼時,它的取值範圍為 1 9...