一條包含字母 a-z 的訊息通過以下的方式進行了編碼:
'a' -> 1
'b' -> 2
...
'z' -> 26
除了上述的條件以外,現在加密字串可以包含字元'*'了,'*'可以被當做1到9當中的任意乙個數字。
給定一條包含數字和字元'*'的加密資訊,請確定解碼方法的總數。
同時,由於結果值可能會相當的大,所以你應當對109 + 7取模。(翻譯者標註:此處取模主要是為了防止溢位)
輸入:"*"輸出:9
解釋:加密的資訊可以被解密為: "a", "b", "c", "d", "e", "f", "g", "h", "i".
class solution
else if (s[i] == '0')
else
else if (s[i - 1] == '1' || (s[i - 1] == '2' && s[i] < '7')) cur += pre;
}pre = tmp;
cur %= 1e9 + 7;
}return cur;
}};
相較於「解碼方法 1」,本題多了乙個*號。這類動態規劃只需要記錄前兩個值,所以並不需要初始化陣列。本題難點在於各種邊界條件,該解法的做法為,先判斷當前值s[i],再判斷上乙個值s[i-1]。做這種題一定要有條理,不能想到啥加啥,否則很容易混亂。 LeetCode 解碼方法
q 一條僅包含字母 a z 的訊息用下列的方式加密成數字 a 1 b 2 z 26 現在給出加密成數字的密文,請判斷有多少種解密的方法 例如 給出的密文為 12 可以解密為 ab 1 2 或者 l 12 所以密文 12 的解密方法是2種.a 分兩種情況。當前位置 s i 1 9 當前位置可單獨作為乙...
LeetCode91 解碼方法
這題,我花了好大的功夫才通過,中途踩了很多坑,從這個15頂25踩,通過率只有10 多,就能看出這個題,雖然是乙個中等難度的題,但是並沒有那麼好做。看到題目,感覺有點像爬樓梯的那個?想到用動態規劃。第一次寫 沒有考慮0的情況,出錯,那麼就考慮吧,如果出現在頭,就返回0,出現的中間的話。不過我是從後往前...
LeetCode 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 或者 ...