Java經典算法:解碼方式

使用以下映射將包含來自AZ的字母的消息編碼爲數字:
‘A’->
1’B’-> 2

‘Z’-> 26
給定包含數字的已編碼消息,請確定對其進行解碼的總數。
Java解決方案
通過使用動態編程可以解決此問題。這類似於計算爬樓梯方式的問題。關係是dp[n]=dp[n-1]+dp[n-2]。,下面是代碼:
public int numDecodings(String s) {
int[] dp = new int[s.length() + 1];
dp[0] = 1;
if (s.charAt(0) == ‘0’) {
return 0;
}
dp[1] = 1;

for (int i = 1; i < s.length(); i++) {
    char c = s.charAt(i);
    char p = s.charAt(i - 1);

    if (c == '0' && (p == '0' || p > '2')) {
        return 0;
    }

    if (p == '0') {
        dp[i + 1] = dp[i];
    } else if (p == '1') {
        if (c == '0') {
            dp[i + 1] = dp[i - 1];
        } else {
            dp[i + 1] = dp[i - 1] + dp[i];
        }
    } else if (p == '2') {
        if (c == '0') {
            dp[i + 1] = dp[i - 1];
        } else if (c <= '6') {
            dp[i + 1] = dp[i] + dp[i - 1];
        } else {
            dp[i + 1] = dp[i];
        }
    } else {
        dp[i + 1] = dp[i];
    }

}

return dp[s.length()];}

最後,開發這麼多年我也總結了一套學習Java的資料與面試題,如果你在技術上面想提升自己的話,可以關注我,私信發送領取資料或者在評論區留下自己的聯繫方式,有時間記得幫我點下轉發讓跟多的人看到哦。在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章