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

lintcode512. 解码方法

程序员文章站 2022-07-05 13:14:40
...

有一个消息包含A-Z通过以下规则编码

‘A’ -> 1
‘B’ -> 2

‘Z’ -> 26
现在给你一个加密过后的消息,问有几种解码的方式

样例
样例 1:

输入: "12"
输出: 2
解释: 它可以被解码为 AB (1 2) 或 L (12).
样例 2:

输入: "10"
输出: 1
注意事项
we can't decode an empty string. So you should return 0 if the message is empty.
class Solution {
public:
    /**
     * @param s: a string,  encoded message
     * @return: an integer, the number of ways decoding
     */
    int numDecodings(string &s) {
        // write your code here
        if (s.size() <= 0) {
            return 0;
        }
        vector<int> dp(s.size()+1);
        dp[0]=1;
        for (int i = 1; i <= s.size(); i++) {
            if(s[i-1]=='0') dp[i]=0;
            else
            {
                dp[i]+=dp[i-1];
            }
            if(i>1)
            {
                int num=atoi(s.substr(i - 2, 2).c_str());
                if(num>=10&&num<=26) dp[i]+=dp[i-2];
            }
        }
        return dp[s.size()];
    }
};
相关标签: lintcode