91. Decode Ways

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.

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).
class Solution {
public:
    int numDecodings(string s) {
        if(s.empty() || s.length() == 0) {
            return 0;
        }
        int n = s.length();
        vector<int> sum(n+1, 0);
        sum[0] = 1;
        sum[1] = s[0] != '0' ? 1 : 0;
        for(int i = 2; i <= n; i++){
            int first = atoi(s.substr(i-1, 1).c_str());
            int second = atoi(s.substr(i-2, 2).c_str());
            if(first >= 1 && first <= 9){
                sum[i] += sum[i-1];
            }
            if(second >=10 && second <= 26){
                sum[i] += sum[i-2];
            }
        }
        return sum[n];
    }
};


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013250416/article/details/80344098
个人分类: leetcode
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

91. Decode Ways

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭