欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Leetcode: 91. 解码方法(动态规划)

程序员文章站 2022-07-05 18:19:06
...

描述:

一条包含字母 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), 或者 "BBF" (2 2 6) 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/decode-ways
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
    int numDecodings(string s) {
        int l = s.size();
        if (l == 0 || s[0] == '0')
            return 0;
        int pre = 1, cur = 1;
        for (int i = 1; i < l; ++i) {
            int tmp = cur;
            if (s[i] == '0') 
                if (s[i-1]=='1' || s[i-1]=='2')
                    cur = pre;
                else
                    return 0;
            else if (s[i-1] != '0' && (s[i-1]-'0')* 10 + s[i]-'0' <= 26) {
                cur = cur + pre;
            }
            pre = tmp;
        }
        return cur;
    }
};