【LeetCode】129.Decode Ways
阿新 • • 發佈:2018-11-13
題目描述(Medium)
A message containing letters from A-Z
is being encoded to numbers using the following mapping:
'A' -> 1 'B' -> 2 ... 'Z' -> 26
Given a non-empty string containing only digits, determine the total number of ways to decode it.
題目連結
https://leetcode.com/problems/decode-ways/description/
Example 1:
Input: "12"
Output: 2
Explanation: It could be decoded as "AB" (1 2) or "L" (12).
Example 2:
Input: "226"
Output: 3
Explanation: It could be decoded as "BZ" (2 26), "VF" (22 6), or "BBF" (2 2 6).
演算法分析
動態規劃,cur = 當前為兩位數的解法數prev + 當前為一位數的解法數cur,加上限制條件即可。
提交程式碼:
class Solution { public: int numDecodings(string s) { if(s.empty() || s[0] == '0') return 0; const int n = s.size(); int prev = 0, cur = 1; for (int i = 0; i < n; ++i) { // 當前為1位數解法不可行 if (s[i] == '0') cur = 0; // 當前為2位數解法不可行 if (i < 1 || !(s[i - 1] == '1' || s[i - 1] == '2' && s[i] <= '6')) prev = 0; int temp = cur; cur += prev; prev = temp; } return cur; } };